关于toolbar的menu显示icon问题

需求需要在toolbar的menu菜单里面显示icon,但是据google的解释说
已经不支持这么做了
Options menus: The icon menus do not support item check marks and only show the item's condensed title. The expanded menus (only available if six or more menu items are visible, reached via the 'More' item in the icon menu) do not show item icons, and item check marks are discouraged.
所以,没办法,还是要解决啊,看了下MenuBuilder的源码,要么用反射
   @Override  
    public boolean onMenuOpened(int featureId, Menu menu) {  
        setOverflowIconVisible(featureId, menu);  
        return super.onMenuOpened(featureId, menu);  
    }  
 
    /**
     * 显示OverflowMenu的Icon
     *  
     * @param featureId
     * @param menu
     */  
    private 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) {  
                    Log.d("OverflowIconVisible", e.getMessage());  
                }  
            }  
        }  
    }
要么就采用子菜单的形式
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_settings"
        android:icon="@drawable/more"
        app:showAsAction="always">
        <menu>
            <item
                android:id="@+id/action_select"
                android:icon="@drawable/select"
                android:showAsAction="never"
                android:title="@string/select" />
            <item
                android:id="@+id/action_date"
                android:icon="@drawable/date"
                android:showAsAction="never"
                android:title="@string/date" />
            <item
                android:id="@+id/action_month"
                android:icon="@drawable/month"
                android:orderInCategory="100"
                android:showAsAction="never"
                android:title="@string/month" />
        </menu>
    </item>
</menu>

建议第二种当然更好!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值