Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何为所有设备支持阿拉伯语文本字体?_Android_Fonts_Typeface_Android Typeface - Fatal编程技术网

Android 如何为所有设备支持阿拉伯语文本字体?

Android 如何为所有设备支持阿拉伯语文本字体?,android,fonts,typeface,android-typeface,Android,Fonts,Typeface,Android Typeface,我创建了一个Android应用程序活动,其中包含阿拉伯语文本,我将文本的字体设置为 Typeface tf= Typeface.createFromAsset(getAssets(), "trado.ttf"); textView.setTypeface(tf); 但是这种字体不支持所有的deveice。在三星S4上,它正常工作,但在三星grand上,它不工作 三星galaxy s4屏幕截图,正确显示阿拉伯语文本 三星grand无法正确显示阿拉伯语文本的屏幕截图 我附上两个屏幕截图,请

我创建了一个Android应用程序活动,其中包含阿拉伯语文本,我将文本的字体设置为

 Typeface tf= Typeface.createFromAsset(getAssets(), "trado.ttf");
 textView.setTypeface(tf);
但是这种字体不支持所有的deveice。在三星S4上,它正常工作,但在三星grand上,它不工作

三星galaxy s4屏幕截图,正确显示阿拉伯语文本

三星grand无法正确显示阿拉伯语文本的屏幕截图

我附上两个屏幕截图,请检查并告诉我,
我如何处理这个问题。

你应该缓存字体,否则。缓存也会提高速度,因为一直从资产中读取数据并不是非常快

public class FontCache {

    private static Hashtable<String, Typeface> fontCache = new Hashtable<String, Typeface>();

    public static Typeface get(String name, Context context) {
        Typeface tf = fontCache.get(name);
        if(tf == null) {
            try {
                tf = Typeface.createFromAsset(context.getAssets(), name);
            }
            catch (Exception e) {
                return null;
            }
            fontCache.put(name, tf);
        }
        return tf;
    }
}
最初,我建议尝试第一种方法,但如果您遇到问题,请选择第二种方法(第三方库)


希望这将有助于

我认为创建值arabic->strings.xml并在这里写下您的文本。这将有助于

使用RTL布局并检查itNot Placement Issu,我已经使用RTL布局但不起作用。更多信息可能会有所帮助-什么不起作用?您在这一代码行中有任何异常吗?还是在其他线路上?文本没有显示吗?还是胡言乱语?这是你从外部来源收到的文本吗?(例如,某些web服务)或者它是硬编码的,我们真的需要更多信息才能help@JawadAli你是如何解决这个问题的?我在乌尔都语上实现nastaleeq字体时遇到了同样的问题。文本刚刚在textview中被覆盖。请帮助我显示textView.setTypeface(Typeface.defaultFromStyle(必需的int值),tf)上的语法错误;抱歉无法帮助:(让我看看有人会想出解决方案现在我附上图片,一张图片在S4和三星Grand中正确显示阿拉伯文本,但无法正常工作。请检查它并帮助我解决问题。@King of Mass
@Override
public void onCreate() {
    super.onCreate();
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
                            .setDefaultFontPath("fonts/Roboto-RobotoRegular.ttf")
                            .setFontAttrId(R.attr.fontPath)
                            .build()
            );
    //....
}