Android 如何为所有设备支持阿拉伯语文本字体?
我创建了一个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无法正确显示阿拉伯语文本的屏幕截图 我附上两个屏幕截图,请
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()
);
//....
}