我會給你更詳細的回答了這個問題。
的彈出菜單是這樣的創建,
PopupMenu popupMenu = new PopupMenu(context, anchorView);
現在的「語境」在這裏扮演的造型非常重要的作用。 PopupMenu的風格取決於您傳遞的上下文的樣式。所以要非常小心。我幾乎花了半小時才弄清楚這一點。
如果你在一個片段只是通過「getActivity()」,你就完成了。
造型的彈出菜單項
只是覆蓋在你的風格以下項目,
<item name="textAppearanceLargePopupMenu">@style/myPopupMenuTextAppearanceLarge</item>
<item name="android:textAppearanceLargePopupMenu">@style/myPopupMenuTextAppearanceLarge</item>
<item name="textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceSmall</item>
<item name="android:textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceSmall</item>
和定製你想要的文本外觀,
<style name="myPopupMenuTextAppearanceSmall" parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small">
<item name="android:textColor">@color/text_hint_color</item>
<item name="android:textSize">@dimen/text_size</item>
</style>
<style name="myPopupMenuTextAppearanceLarge" parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large">
<item name="android:textColor">@color/text_hint_color</item>
<item name="android:textSize">@dimen/text_size</item>
</style>
如果你想要更改PopupMenu的背景,請執行此操作
<item name="popupMenuStyle">@style/myPopupMenuStyle</item>
<item name="android:popupMenuStyle">@style/myPopupMenuStyle</item>
高級造型
的彈出菜單項不支持默認顯示的圖標。但顯示圖標可以使它看起來好多了。我建議嘗試一下。
爲了實現這個剛剛把下面的代碼在你的活動,你是好去,
@Override
public boolean onMenuOpened(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 (NoSuchMethodException e) {
Log.e("tag", "onMenuOpened", e);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
return super.onMenuOpened(featureId, menu);
}
雖然樣式選項是相當有限的,但仍然可以很明顯的自定義一些基本屬性。
可能的重複:http://stackoverflow.com/questions/12636101/how-to-style-popupmenu – nedaRM