Java 如何根据区域设置更改我的应用程序中的字体?

Java 如何根据区域设置更改我的应用程序中的字体?,java,android,Java,Android,这段代码对我来说非常有效。 我的问题是,如果我的应用程序支持两种语言(阿拉伯语和英语),有没有办法在同一文本中添加两种字体?一个用于阿拉伯语文本,另一个用于英语文本?试试这个 public class MainActivity extends AppCompatActivity { TextView hi; Typeface ty; @Override protected void onCreate(Bundle savedInstanceState) {

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

试试这个

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);
    }
}

这不是正确的方法,但这会解决你的问题

if(Locale.getDefault().getISO3Language().equals("ar")){
        //LANGUAGE IS ARABIC
        text.setTypeface(arabicTypeface);
    }
    else{
        //LANGUAGE IS ENGLISH
        text.setTypeface(englishTypeface);
    }
这类示例仅用于更改文本字体。

解决方案:

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

基于当前区域设置
getResources().getConfiguration().Locale您可以区分文本并设置两种不同的字体!在哪里解决这个问题?在这个代码中,你的类型名称应该放在哪里?我已经发布了答案,请检查!用什么来代替Html?字体名称?不需要任何字体名称,只要在代码集中使用简单的textview,就可以简单地使用,例如hi=(textview)findViewById(R.id.hi);在set hi.setText(Html.fromHtml(text))之后;在这里,您可以将文本替换为任何类型的字符串,如英语、阿拉伯语、印地语等。我这样做,但不起作用。else中的字体是有效的:例如,如果我将阿拉伯语字体放在else中,它是有效的,而英语不是,反之亦然,如果(Locale.getDefault().getISO3Language().equals(“ar”){//语言是阿拉伯语hi=(TextView)findViewById(R.id.hi);tyAr=Typeface.createfromset(getAssets(),“fonts/Amiri slated.ttf”);hi.setTypeface(tyAr);}其他{//语言为英语hi=(TextView)findViewById(R.id.hi);tyEn=Typeface.createFromAsset(getAssets(),“fonts/Spirax Regular.ttf”);hi.setTypeface(tyEn)}}
字体一定有问题,你确定它们不同吗?你是否更改了设备语言?我真的很抱歉,我不知道为什么它也不起作用!我只是将你的英语更改为我不需要其他字体。为什么它不起作用?你的资产文件夹中有那些.ttf文件吗?是的,如果没有,它就不会起作用hrow a NPEyes我有两个.ttf文件,一个是阿拉伯语,另一个是英语。在你给我的代码中,当我在if语句中将“ar”改为“en”时,显示的字体是其他文件中的字体。有人能用我提到的字体为我从零变为零吗?-当然可以-
@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"));
}