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設(shè)置圖標
<?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中添加如下代碼
/**
* 通過反射,設(shè)置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);
}