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