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);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容