2017-04-11 42 views
0
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); 
    } 
} 

这段代码对我来说工作得很好。
我的问题是,如果我的应用程序支持两种语言(阿拉伯语和英语),是否有任何方式将两种字体添加到相同的文本?一个用于阿拉伯文本,另一个用于英文文本?如何根据语言环境更改我的应用程序中的字体?

+0

在当前Locale'getResources的基础上()getConfiguration()语言环境;'你可以区分文本和设置两个不同的字样! – buzzingsilently

+0

去哪里? 和在哪里把你的类型名称在这个代码? –

+0

我已发布回答,请检查! – buzzingsilently

回答

0

试试这个

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

我这样做,但它没有奏效。 **其中**的字体是工作的一个:例如,如果我把阿拉伯语字体里面**其他**它是工作,但英文不是,反之亦然 –

+0

这就是'if(Locale.getDefault()。 getISO3Language()。equals(“ar”)){ // LANGUAGE IS ARABIC hi =(TextView)findViewById(R.id.hi); tyAr = Typeface.createFromAsset(getAssets(),“fonts/Amiri-Slanted.ttf”); hi.setTypeface(tyAr);其他{ //语言是英语 hi =(TextView)findViewById(R.id.hi); tyEn = Typeface.createFromAsset(getAssets(),“fonts/Spirax-Regular.ttf”); hi.setTypeface(tyEn)}}' –

+0

字体一定有问题,你确定它们不一样吗? –

0

这不是正确的方式,但是这将解决你的问题

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

这种类型的例子是使用简单地更改文字的字体。

+0

要放什么而不是** Html **?字体名称? –

+0

不需要任何字体名称,只要您在代码集中使用简单的textview方法就可以简单地使用,例如hi =(TextView)findViewById(R.id.hi);并设置hi.setText(Html.fromHtml(text))后; –

+0

在这里,您可以将文本替换为任何类型的字符串,如eng,arabic,hindi any。 –

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

我真的很抱歉,我不知道为什么它不工作!我只是把_Your English_改成字体,我什么都不需要。为什么它不起作用然后 –

+0

你的资产文件夹中是否有这些.ttf文件? – buzzingsilently

+0

是的,如果没有,它会抛出NPE –

相关问题