多种语言的多种字体

时间:2013-03-19 11:42:40

标签: android textview android-fonts

我最近遇到了开发应用程序的情况,我必须在文本视图中显示不同的语言。目前我使用字体/字体显示很少这样:

Typeface tf = Typeface.createFromAsset(this.getAssets(),
                "DroidHindi.ttf");
        TextView textView1 = (TextView) findViewById(R.id.textView2);
        textView1.setTypeface(tf);
        textView1.setText("कचजड, कचजड");

        Typeface tf1 = Typeface.createFromAsset(this.getAssets(),
                "asunaskh.ttf");
        TextView textView = (TextView) findViewById(R.id.textView1);
        textView.setTypeface(tf1);
        textView.setText("یہ انگریزی نہیں");

        Typeface tf2 = Typeface.createFromAsset(this.getAssets(),
                "Banglafont.ttf");
        TextView textView2 = (TextView) findViewById(R.id.textView3);
        textView2.setTypeface(tf2);// এই ইংরেজি নয়
        textView2.setText("এই ইংরেজি নয়");

它的好我的问题是我必须支持大约20种不同的语言,然后当我在不同的活动中应用它时,事情将变得非常乏味。任何替代方式来实现。

3 个答案:

答案 0 :(得分:4)

在应用启动时初始化您的字体,并创建一个可以根据语言设置任意视图并设置字体的方法。

答案 1 :(得分:4)

您可以使用access public创建一个类和一个函数,它将返回带有您想要的Font的TextView对象。

    TextView public SetLanguage(TextView tv,string type)
    {
     TextView newtv = tv;
     Typeface tf;
     switch(type)
     {
      case "urdu":
         tf = Typeface.createFromAsset(this.getAssets(),"urdu.ttf");
         break;
      case "hindi":
         tf = Typeface.createFromAsset(this.getAssets(),"hindi.ttf");
         break;
     //   up so on                

   }
   newtv.setTypeface(tf);
   return newtv;
 }
  // and call it any where..
 TextView textView1 = (TextView) findViewById(R.id.textView2);
 textView1 = classobj.SetLanguage(textView1,"urdu");
 //assign string of text to it

答案 2 :(得分:0)

就像我们处理其他资源文件一样,我们也可以为我们想要的任何语言环境或国家/地区代码定义字体目录。这种方法的缺点是两种字体必须命名相同,尽管它们不同,但其他方法却是一个干净的解决方案。

enter image description here