2

私のアプリケーションでは、を実装してい5 different Custom App Themesます。

私が作成したこれらのテーマにはCustomTextview、を拡張する5つの異なるフォントを使用していTextviewます。以下は、それが作成される形式です。

public class CustomFontTextView extends TextView {
private static final String CUSTOM_FONT = "Custom-Regular.ttf";
private static final String TAG = CustomFontTextView.class.getName();

public CustomFontTextView(Context context) {
    super(context);

    if (android.os.Build.VERSION.SDK_INT < 14) {
        setCustomFont(context, CUSTOM_FONT);
    }
}

public CustomFontTextView(Context context, AttributeSet attrs) {
    super(context, attrs);

    if (android.os.Build.VERSION.SDK_INT < 14) {
        setCustomFont(context, CUSTOM_FONT);
    }
}

public CustomFontTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

    if (android.os.Build.VERSION.SDK_INT < 14) {
        setCustomFont(context, CUSTOM_FONT);
    }    
}

public boolean setCustomFont(Context ctx, String fontFile) {
    try {
        setTypeface(Typeface.createFromAsset(ctx.getAssets(), fontFile));       
        return true;

    } catch (Exception e) {
        Log.e(TAG, "Could not get typeface: "+e.getMessage());
        return false;
    }
}

}

XMLレイアウトでカスタムテキストビューを使用していました。

    <com.myapp.android.fonts.CustomFontTextView
    android:id="@+id/Text_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:text="@string/my_text_content"
    android:textColor="@android:color/white"
    android:textSize="22sp" />

しかし、さまざまなテーマを実装するには、選択したテーマに応じてすべてのテキストビューを変更するいくつかの方法を見つける必要があります。

テーマ内でフォントを設定する方法はありますか?

      <style name="MyCustomTheme" parent="android:style/Theme">
               ..............   ......................
             ...........     ...................
         <item name="android:textColorPrimary">#000000</item>
         <item name="android:buttonStyle">@style/MyCustomButton</item>
      </style>

多くのUIコンポーネントが関係しているので、コードを邪魔することなくこれを実装したいと思います。

4

1 に答える 1

1

フォントのカスタム属性を作成し、スタイルに含めます。CustomViewクラスで、この属性にアクセスし、それに応じてフォントを設定します。

詳細については、「ビュークラスの作成」を確認してください。

于 2012-12-11T07:28:06.613 に答える