2

最近、テキストビューでさまざまな言語を表示する必要があるアプリを開発しているときに状況に遭遇しました。現在、私はこのようなフォント/書体を使用していくつかを表示しています:

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の異なる言語をサポートする必要があるということです。そうすると、これをさまざまなアクティビティに適用すると、非常に面倒になります。達成するための代替方法。

4

3 に答える 3

4

あなたがすることは、あなたが仮定したいフォントで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
于 2013-03-19T13:25:10.810 に答える
4

アプリの起動時に書体を初期化し、任意のビューを取り、言語に基づいて書体を設定するメソッドを作成します。

于 2013-03-19T11:47:30.213 に答える