2017-04-11 71 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 –