如何根据Locale更改我的应用程序中的字体?

时间:2017-04-11 13:06:23

标签: java android

public class MainActivity extends AppCompatActivity {

    TextView hi;
    Typeface ty;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        hi = (TextView) findViewById(R.id.hi);
        ty = Typeface.createFromAsset( getAssets() , "fonts/Spirax-Regular.ttf");

        hi.setTypeface(ty);
    }
}

这段代码对我很有用。
我的问题是,如果我的应用程序支持两种语言(阿拉伯语和英语),有没有办法在同一文本中添加两种类型的字体?一个用于阿拉伯语文本,另一个用于英语文本?

3 个答案:

答案 0 :(得分:0)

试试这个

if(Locale.getDefault().getISO3Language().equals("ar")){
        //LANGUAGE IS ARABIC
        text.setTypeface(arabicTypeface);
    }
    else{
        //LANGUAGE IS ENGLISH
        text.setTypeface(englishTypeface);
    }

答案 1 :(得分:0)

这不是正确的方法,但这将解决您的问题

textView.setText(Html.fromHtml(text));

此类示例仅用于更改文本字体。

答案 2 :(得分:0)

解决方案:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    hi = (TextView) findViewById(R.id.tvTime);
    setContentView(R.layout.activity_main);

    if(getResources().getConfiguration().locale.getLanguage().equals("ar"))
        hi.setTypeface(Typeface.createFromAsset( getAssets() , "YOUR ARABIC .TTF FILE HERE"));
    else if(getResources().getConfiguration().locale.getLanguage().equals("en"))
        hi.setTypeface(Typeface.createFromAsset( getAssets() , "YOUR ENGLISH .TTF FILE HERE"));
}