7

デフォルトのシャーロック ライト テーマを使用している場合、この方法でフォント フェイスを変更できます (TextView にキャストできます)。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.main, menu);

    getLayoutInflater().setFactory(new LayoutInflater.Factory() {
        public View onCreateView(String name, Context context,
                AttributeSet attrs) {

            if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")
                    || name.equalsIgnoreCase("TextView")) {
                try {
                    LayoutInflater li = LayoutInflater.from(context);
                    final View view = li.createView(name, null, attrs);
                    new Handler().post(new Runnable() {
                        public void run() {

                            // here I can change the font!
                            ((TextView)view).setTypeface(MY_CUSTOM_TYPE_FACE);
                        }
                    });
                    return view;
                } catch (InflateException e) {
                    // Handle any inflation exception here
                } catch (ClassNotFoundException e) {
                    // Handle any ClassNotFoundException here
                }
            }
            return null;
        }
    });

    return true;
}

デフォルトのライトテーマの actiobarsherlock

しかし、このツールでカスタム テーマを使用すると、上記の解決策は機能しません。このように、各項目は ActionMenuItemView のインスタンスであり、フォント フェイスを適用する方法がわかりません。

カスタムテーマのアクションバーシャーロック

4

1 に答える 1