1

を使用して Textviews のフォントを変更しました

Typeface font = Typeface.createFromAsset(this.getAssets(),"fonts/Arial.ttf"); 

私のXmlレイアウトには、さまざまなフォントのテキストビューがたくさんあります。これをいつでもプログラムで保持したい

以下を試しました

Typeface.DEFAULT 

Typeface font =null;

すべてのテキストビューは、Xml のものではなく、同じフォントに設定されています

アプリを再起動せずにフォントを保持する方法は?

4

2 に答える 2

1

考えられる解決策は、TypeFace クラスの静的インスタンスを使用することです。しばらく前に、このスレッドでこの問題の解決策を提案しました: Access a typeface once from asset and use it as a reference。お役に立てば幸いです。

于 2013-10-21T06:54:12.190 に答える
0

ステップ 1) クラス名を CustomTextView として作成し、このコードをコピーして貼り付けますが、カスタム フォントが Project Assets フォルダーであることを確認してください。したがって、フォント名を置き換えることができます。

パッケージ YOUR_PACKAGE;

public class CustomTextView extends TextView{

    public CustomButton(Context context) {
        super( context );
        setFont();

    }

    public CustomTextView (Context context, AttributeSet attrs) {
        super( context, attrs );
        setFont();
    }

    public CustomTextView (Context context, AttributeSet attrs, int defStyle) {
        super( context, attrs, defStyle );
        setFont();
    }

    private void setFont() {
        Typeface normal = Typeface.createFromAsset(getContext().getAssets(),"fonts/Arial.ttf");
        setTypeface( normal, Typeface.NORMAL );

    }
}

ステップ2)

レイアウトでこのカスタム TextView を使用する

<LinearLayout
        android:id="@+id/signing_details"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="vertical"
        android:weightSum="100" >

<YOUR_PACKAGE.CustomTextView
                android:id="@+id/textview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                 android:text="@string/app_name"
                 android:textSize="16sp" />
</ LinearLayout>

この CustomTextView を動的に使用することもできます

 CustomTextView textView = new CustomTextView (this);
 textView.setText(res.getString(R.string.app_name));
 textView.setTextColor(Color.parseColor("#000000"));
 textView.setTextSize(16);

これがお役に立てば幸いです。

于 2013-10-21T06:54:40.823 に答える