menu item icon in toolbar overflow menu

stackoverflow解决





overflow menu的几个Item都不显示icon
贴一部分menu

<item android:id="@+id/action_zone"
        android:title="@string/zone"
        android:orderInCategory="90"
        android:icon="@mipmap/biz_forum_author_icon"
        app:showAsAction="always" />

    <item
        android:id="@+id/action_share"
        android:orderInCategory="90"
        android:title="action_share"

        app:showAsAction="always"/>

    <item android:id="@+id/action_weather"
        android:title="人之初"
        android:orderInCategory="100"
        android:icon="@mipmap/biz_main_menu_weather"
        app:showAsAction="never"/>
    <item android:id="@+id/action_offline"
        android:title="性本善"
        android:orderInCategory="100"
        android:icon="@mipmap/biz_main_menu_offline"
        app:showAsAction="never"/>

可以看到,每个Item都添加了icon
android:icon=”@mipmap/biz_main_menu_offline”
然而都不显示

解决方案

1.这个方案虽然没有解决我的问题,依旧不显示,但是解决了其他人的问题

/**
     * 利用反射让隐藏在Overflow中的MenuItem显示Icon图标
     * @param featureId
     * @param menu
     * onMenuOpened方法中调用
     */
    public static void setOverflowIconVisible(int featureId, Menu menu) {
        if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {
            if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
                try {
                 Method m = menu.getClass().
                 getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
                    m.setAccessible(true);
                    m.invoke(menu, true);
                } catch (Exception e) {
                }
            }
        }
    }

然后在这里调用即可

//显示溢出图标
    @Override
    public boolean onMenuOpened(int featureId, Menu menu) {
        setOverflowIconVisible( featureId,  menu);
        return super.onMenuOpened(featureId, menu);
    }

2.后来尝试的一些方案就不说了,直接上可用的方案(解决我问题的)

//解决ICON不显示
    @Override
    protected boolean onPrepareOptionsPanel(View view, Menu menu) {
        if (menu != null) {
            if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
                try {
                    Method m = menu.getClass().getDeclaredMethod(
                            "setOptionalIconsVisible", Boolean.TYPE);
                    m.setAccessible(true);
                    m.invoke(menu, true);
                } catch (Exception e) {
                    Log.e(getClass().getSimpleName(),
                    "unable to set icons for overflow menu", e);
                }
            }
        }
        return super.onPrepareOptionsPanel(view, menu);
    }

时间: 2024-08-27 23:37:33

menu item icon in toolbar overflow menu的相关文章

Android自定义ActionProvider ToolBar实现Menu小红点_Android

今天的几个目标: 1. 自定义ActionProvider 2. Toolbar ActionBar自定义Menu 3. Toolbar ActionBar 右侧Menu添加角标(Toolbar ActionBar Menu添加小红点) 源代码在文章末尾. -------------------------------------------------------------------------------- 效果预览 自定义Menu后不影响原生MD的任何效果.可以通过外部来控制显示的文字

Android动态修改ToolBar的Menu菜单示例

Android动态修改ToolBar的Menu菜单 效果图 实现 实现很简单,就是一个具有3个Action的Menu,在我们滑动到不同状态的时候,把对应的Action隐藏了. 开始上货 Menu Menu下添加3个Item <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xml

Android自定义ActionProvider ToolBar实现Menu小红点

今天的几个目标: 1. 自定义ActionProvider 2. Toolbar ActionBar自定义Menu 3. Toolbar ActionBar 右侧Menu添加角标(Toolbar ActionBar Menu添加小红点) 源代码在文章末尾. -------------------------------------------------------------------------------- 效果预览 自定义Menu后不影响原生MD的任何效果.可以通过外部来控制显示的文字

屏蔽android的menu键,使menu键不能用,自定义menu键

在Activity中重写onKeyDown方法,Menu键被屏蔽但HOME键未被屏蔽,其中还HOME屏蔽在我的另外一篇博客中已详细介绍,下面来解决Menu键被屏蔽,让其中MENU键有效. 屏蔽android的menu键: @Override public boolean onPrepareOptionsMenu(Menu menu) { Log.i(TAG, "groupList.size() = " + groupList.size()); if(groupList.size() &

怎么隐藏list里的menu item

问题描述 开发一个sharepointapp,大概需求如下1.要求开发一个sharepointapp,最终部署到officestore,里,2.不同的人登录到365站点之后,根据权限判断,DownloadaCopy是否会被隐藏3.点击这个document之后,跳转到一个website里,得到文件流之后,保存成pdf,之后在website里显示出来因为保存pdf需要第三方的dll,所以最终考虑用sharepointappprovider-hosted方式去做,但现在不知道如何做,才会把365站点里

menu不显示在滚动条内-menu不显示在纵向滚动条内,如图

问题描述 menu不显示在纵向滚动条内,如图 解决方案 如果你已经加了showAs="always"这个属性还没有生效的话,那就是该栏被占满,或者是主题样式的问题了.

jQuery EasyUI API 中文文档 - Menu菜单_jquery

用 $.fn.menu.defaults 重写了 defaults. <?XML:NAMESPACE PREFIX = O /> 文档 - Menu菜单_jquery-jquery easyui menu"> 复制代码 代码如下: <div id="mm" class="easyui-menu" style="width:120px;"> <div>New</div> <div

jQuery EasyUI API 中文文档 - 菜单(Menu)

Menu 菜单 用 $.fn.menu.defaults 重写了 defaults. 用法示例 创建 Menu 经由标记创建 menu 应该添加 'easyui-menu' 类到 <div/> 标记. 每个 menu item 经由 <div/> 标记创建. 我们可以添加 'iconCls' 属性到 menu item,以定义一个显示在menu item 左边的图标.添加 'menu-sep' 类到 menu item 将产生一个 menu 分隔符. 1. <div id=&

Android ActionBar使用教程_Android

ActionBar的引入方式: 有几种,从 Android 3.0(API lever 11) 开始,所有使用 Theme.Holo 主题(或者它的子类)的 Activity 都包含了 action bar,当 targetSdkVersion 或 minSdkVersion 属性被设置成 "11" 或更大时,它是默认主题.为了兼容Android3.0之前的低版本,actionbar通常通过extends集成Support包下的AppCompatActivity实现,同时需要使用The