Android更改默认menu界面颜色及显示图标

《Android更改默认menu界面颜色及显示图标》 QQ截图20160726155638.png

更改默认menu颜色

定制一个style,永远更改默认背景颜色

<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
        <item name="overlapAnchor">false</item>
        <item name="android:dropDownVerticalOffset">4dp</item>
        <item name="android:layout_marginRight">4dp</item>
        <item name="android:popupBackground">@color/color_green</item>
    </style>

在我们当前主题中引入

<item name="actionOverflowMenuStyle">@style/OverflowMenu</item>

android:popupBackground所引用的资源可以是颜色也可以是drawable资源,也可以是图片

使menu显示图标

在menu/main.xml菜单文件中为每个menu设置图标

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:icon="@mipmap/menu_group_icon"
        android:id="@+id/action_group_chat"
        android:title="@string/menu_group_chat" />
    <item
        android:icon="@mipmap/menu_add_icon"
        android:id="@+id/action_add_friend"
        android:title="@string/menu_addfriend" />
    <item
        android:icon="@mipmap/menu_scan_icon"
        android:id="@+id/action_scan"
        android:title="@string/menu_scan" />
    <item
        android:icon="@mipmap/menu_feedback_icon"
        android:id="@+id/action_feedback"
        android:title="@string/menu_feedback" />
</menu>

然后我们需要通过反射将图标显示出来,在我们的主Activity中添加如下代码

/**
     * 通过反射,设置menu显示icon
     *
     * @param view
     * @param menu
     * @return
     */
    @Override
    protected boolean onPrepareOptionsPanel(View view, Menu menu) {
        if (menu != null) {
            if (menu.getClass() == MenuBuilder.class) {
                try {
                    Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
                    m.setAccessible(true);
                    m.invoke(menu, true);
                } catch (Exception e) {
                }
            }
        }
        return super.onPrepareOptionsPanel(view, menu);
    }
    原文作者:阳翟后生
    原文地址: https://www.jianshu.com/p/ca6fb42062f1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞