java - 使用自定义主题的 actionbar 时如何更改 actionbarsherlock 菜单项字体?

标签 java android actionbarsherlock

当我使用默认的 sherlock light 主题时,我可以通过此方法更改字体(它可以转换为 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 with default light theme

但是当我使用带有 this tool 的自定义主题时, 上述解决方案不起作用。这样,每个项目都是 ActionMenuItemView 的一个实例,我不知道如何对其应用字体。

actiobarsherlock with custom theme

最佳答案

需要创建自定义菜单 View

  private ActionBar setCustomView(ActionBar actionBar,String title, String subtitle,boolean isSubTitleEnable){
    LayoutInflater inflator = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflator.inflate(R.layout.customer_view, null);

    TextView tv = (TextView) v.findViewById(R.id.cust_action_bar_title);
    Typeface tf = Typeface.createFromAsset(this.getAssets(), "YOURFONT.ttf");
    tv.setTypeface(tf);
    tv.setText(title);


    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayOptions(0, actionBar.DISPLAY_SHOW_TITLE);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setCustomView(v);
  return actionBar; 
 }

关于java - 使用自定义主题的 actionbar 时如何更改 actionbarsherlock 菜单项字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12757094/

相关文章:

java - 如何查找文件的目录

java - 返回错误值的方法

java - 在 Android 应用程序中读取 CSV 文件

android - 如何在andengine中显示游戏进度条

android - 从菜单中隐藏应用程序并在我们想要的时候显示

android - 将导航选项卡与 ActionBarSherlock 一起使用时不显示 fragment

java - 如何迭代 JSONObject 以获取单个项目

java - 如何使用 java.sql.Timestamp 作为真正的 java.util.Date 与 JPA

android - 操作栏可检查图标?

crash - 滑动过去的最后一个选项卡应用程序崩溃