我有一个使用两个语言的android应用程序(取决于用户的手机语言)使用值-ar ... 无论如何,我有一个textview显示一些文本,它会根据手机语言而改变
好吧,我想为那个textview设置两种字体,如果手机语言是英语,另一种是电话语言是阿拉伯语的话。
我已经能够将一部手机设置为该textview,但我不知道如何设置替代字体,就像我们在CSS中所做的那样“font-family:Arial,”Helvetica Neue“,Helvetica,sans-serif ;”如果未能为文本设置Arial字体,将应用“Helvetica”字体
总结一下,我有一个文本视图,它的值是语言根据手机语言的变化,我想为每个值设置一个独特的字体
答案 0 :(得分:0)
我认为最简单的方法是制作自己的自定义 TextView 。只需将字体复制到assets文件夹,然后通过调用 setFont1 和 setFont2 在字体之间切换。
的更新强>
该视图将自动将自动字体更改为您的手机语言。我将其设置为检测英语/阿拉伯语,但您可以更改它,甚至添加更多语言。你可以找到two-letter language codes here。
public class MultiFaceTextView extends TextView {
private static Typeface typeface1,typeface2;
public MultiFaceTextView(Context context) {
super(context);
initialise(context);
}
public MultiFaceTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initialise(context);
}
public MultiFaceTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initialise(context);
}
private void initialise(Context context){
if (typeface1==null) typeface1=Typeface.createFromAsset(context.getAssets(), "font1.ttf");
if (typeface2==null) typeface2=Typeface.createFromAsset(context.getAssets(), "font2.ttf");
changeTypeface(Locale.getDefault().getLanguage());
}
private void changeTypeface(String lang){
switch (lang){
case "en":this.setTypeface(typeface1);break;// English
case "ar":this.setTypeface(typeface2);break;// Arabic
}
}
public void setFont1(){changeTypeface("en");}
public void setFont2(){changeTypeface("ar");}
}