如何在工具栏上的溢出菜单中的菜单项上设置字体

括号

我想更改溢出菜单项的默认字体,并设置一个自定义字体

我尝试将Factory添加到中,LayoutInflater并在onCreateView()方法中更改了TextView的字体但这没有用。这是代码(在onCreateOptionsMenu内部),

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

            if (name.contains("com.android.internal.view.menu.IconMenuItemView")) {
                try {
                    LayoutInflater li = LayoutInflater.from(context);
                    final View view = li.createView(name, null, attrs);
                    new Handler().post(new Runnable() {
                        @Override
                        public void run() {
                            ((TextView) view).setTypeface("custom_typeface");
                        }
                    });
                    return view;

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
    });

实际上,当我调试代码时,它从未到达过onCreateView()内部。

那么如何解决呢?

谢谢。

括号

这就是我解决这个问题的方法,

第1步:创建一个全局Factory变量,并在如下所示的onCreate()中进行初始化,

  mFactory = new LayoutInflater.Factory() {
        @Override
        public View onCreateView(String name, final Context context, AttributeSet attrs) {
                try {
                    LayoutInflater li = LayoutInflater.from(context);
                    final View view = li.createView(name, null, attrs);

                    new Handler().post(new Runnable() {
                        @Override
                        public void run() {
                            ((TextView) view.findViewById(R.id.title)).setTypeface("custom_typeface");
                        }
                    });

                    return view;

                } catch (Exception e) {
                    e.printStackTrace();
                }
            return null;
        }
    };

步骤2:在AppCompatActivity中重写onCreateView()方法请记住,有2个具有不同签名的oncreate()方法。

公共视图onCreateView(字符串名称,上下文上下文,AttributeSet属性)-适用于HONEYCOMB之前的应用

公共视图onCreateView(视图父级,字符串名称,上下文上下文,AttributeSet属性)-已在API 11中添加。

onCreateView的实现如下所示,

@Override
public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {

    if(name.contains("android.support.v7.view.menu.ListMenuItemView")) {
        LayoutInflater li = LayoutInflater.from(context);
        View view = null;
        try {
            view = li.createView(name, null, attrs);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        if (view != null) {
            if(mFactory != null) {
                view = mFactory.onCreateView(name,context,attrs);
            }
            return view;
        }
    }
    return super.onCreateView(name, context, attrs);
}

笔记:

(1)由于我使用的是AppCompat支持库,因此我使用android.support.v7.view.menu.ListMenuItemView而不是com.android.internal.view.menu.IconMenuItemView

(2)由于我已经在onCreate()中初始化了Factory对象,因此我从onCreateOptionsMenu()中删除了代码段(在我的问题中发布)。所以它只包含这部分,

 getMenuInflater().inflate(R.menu.my_menu, menu); 
 return true;

参考 :

如何为“选项”菜单设置字体?

使用LayoutInflaterCompat.setFactory的Android菜单项字体

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在工具栏上的溢出菜单中的菜单项上设置字体

来自分类Dev

如何在小于 48dp 的工具栏上垂直居中菜单项?

来自分类Dev

工具栏菜单项始终处于溢出状态

来自分类Dev

带工具栏的AppCompatActivity:菜单项未显示在工具栏上

来自分类Dev

如何将菜单项显示为片段中工具栏上的动作

来自分类Dev

居中工具栏的菜单项

来自分类Dev

如何获取工具栏菜单项的ID?

来自分类Dev

在工具栏溢出菜单中显示菜单项图标时,这种奇怪情况如何发生?

来自分类Dev

单击工具栏上的菜单项会显示一个列表视图

来自分类Dev

单击工具栏上的菜单项会显示一个列表视图

来自分类Dev

如何在Android工具栏中添加单个菜单项?

来自分类Dev

如何在Winform中将上下文菜单分配给工具栏菜单项?

来自分类Dev

工具栏菜单项在片段中单击

来自分类Dev

Android,工具栏布局中的位置菜单项

来自分类Dev

工具栏上等间距的菜单项

来自分类Dev

无法从工具栏菜单项android打开NavigationDrawer

来自分类Dev

Android,工具栏布局中的位置菜单项

来自分类Dev

工具栏菜单项和活动的问题

来自分类Dev

Android 工具栏菜单项背景

来自分类Dev

模拟鼠标在Cocoa中的菜单项上的单击?

来自分类Dev

在操作栏上显示菜单项

来自分类Dev

当我设置为工具栏的 src 菜单项时,Imageview 不可见

来自分类Dev

我如何确保菜单项始终在顶栏上?

来自分类Dev

悬停在菜单项上时如何在菜单项下划线?

来自分类Dev

如何在菜单项上悬停时显示子菜单项

来自分类Dev

如何更改支持工具栏菜单项的onPress行为?

来自分类Dev

v7工具栏OptionsMenu菜单项最右边-如何添加边距

来自分类Dev

更改工具栏的高度后如何将菜单项与center_vertical对齐

来自分类Dev

更改工具栏的高度后如何将菜单项与center_vertical对齐

Related 相关文章

  1. 1

    如何在工具栏上的溢出菜单中的菜单项上设置字体

  2. 2

    如何在小于 48dp 的工具栏上垂直居中菜单项?

  3. 3

    工具栏菜单项始终处于溢出状态

  4. 4

    带工具栏的AppCompatActivity:菜单项未显示在工具栏上

  5. 5

    如何将菜单项显示为片段中工具栏上的动作

  6. 6

    居中工具栏的菜单项

  7. 7

    如何获取工具栏菜单项的ID?

  8. 8

    在工具栏溢出菜单中显示菜单项图标时,这种奇怪情况如何发生?

  9. 9

    单击工具栏上的菜单项会显示一个列表视图

  10. 10

    单击工具栏上的菜单项会显示一个列表视图

  11. 11

    如何在Android工具栏中添加单个菜单项?

  12. 12

    如何在Winform中将上下文菜单分配给工具栏菜单项?

  13. 13

    工具栏菜单项在片段中单击

  14. 14

    Android,工具栏布局中的位置菜单项

  15. 15

    工具栏上等间距的菜单项

  16. 16

    无法从工具栏菜单项android打开NavigationDrawer

  17. 17

    Android,工具栏布局中的位置菜单项

  18. 18

    工具栏菜单项和活动的问题

  19. 19

    Android 工具栏菜单项背景

  20. 20

    模拟鼠标在Cocoa中的菜单项上的单击?

  21. 21

    在操作栏上显示菜单项

  22. 22

    当我设置为工具栏的 src 菜单项时,Imageview 不可见

  23. 23

    我如何确保菜单项始终在顶栏上?

  24. 24

    悬停在菜单项上时如何在菜单项下划线?

  25. 25

    如何在菜单项上悬停时显示子菜单项

  26. 26

    如何更改支持工具栏菜单项的onPress行为?

  27. 27

    v7工具栏OptionsMenu菜单项最右边-如何添加边距

  28. 28

    更改工具栏的高度后如何将菜单项与center_vertical对齐

  29. 29

    更改工具栏的高度后如何将菜单项与center_vertical对齐

热门标签

归档