自定義菜單(通過手機的MENU按鈕觸發的菜單)的方式是什麼(如果有的話)。我在兩件事情特別感興趣:Android:自定義應用程序的菜單(例如背景顏色)
- 改變從標準的淺灰色的背景色爲深灰色
- 菜單項是如何排列的。我有4個項目,他們自動對齊2×2,但我寧願他們都在一行(1×4)
自定義菜單(通過手機的MENU按鈕觸發的菜單)的方式是什麼(如果有的話)。我在兩件事情特別感興趣:Android:自定義應用程序的菜單(例如背景顏色)
不與內置的菜單框架。
歡迎您攔截菜單按鈕(通過onKeyDown()
或其他)並呈現您想要的內容,但請記住,用戶期望它看起來像其他設備上的菜單。
謝謝。那麼我現在就跳過這一步,也許稍後會有更多的時間來實施它。 – znq
我已經看到菜單的自定義安排(如在這裏看到http://androidandme.com/wp-content/uploads/2009/12/05.categories_optionmenu.jpg) 所以一定有辦法做到這一點。 – mtmurdock
@mtmurdock:沒有內置的菜單框架。 – CommonsWare
您也可以實現通常用於顯示標準菜單的「onCreateOptionsMenu」方法,並在這種情況下顯示您想要的任何內容。
在我的比賽,我實現它按下菜單按鈕時,顯示「遊戲暫停」對話框...
我創建了自己的菜單類。這可能不是你想要的,但它應該讓你開始。這裏是我發佈的文章和可下載的源代碼鏈接。使用ActionBarSherlock當style.xml
http://www.codeproject.com/KB/android/AndroidMenusMyWay.aspx
背景菜單顏色在你的主題
<item name="android:panelFullBackground">@android:color/darker_gray</item>
This answer的作品,但墜毀我。這是一個蠻幹的解決方法,使這項工作毫無意義。
// Black Vodoo! Do not try this at home.
final LayoutInflater li = getLayoutInflater();
final Class<LayoutInflater> clazz = LayoutInflater.class;
try {
final Field fieldSet = clazz.getDeclaredField("mFactorySet");
fieldSet.setAccessible(true);
fieldSet.setBoolean(li, false);
li.setFactory(new Factory() {
@Override
public View onCreateView(final String name,
final Context context, final AttributeSet attrs) {
if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {
try {
final LayoutInflater f = getLayoutInflater();
final View view = f.createView(name, null, attrs);
new Handler().post(new Runnable() {
@Override
public void run() {
// Set the text color
((TextView) view).setTextColor(Color.WHITE);
}
});
return view;
} catch (final Exception e) {
}
}
return null;
}
});
} catch (final Exception e) {
e.printStackTrace();
}
使用樣式。 這對我的作品在Android 5.0
<style name="AppTheme" parent="android:Theme.Material.Light">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:actionOverflowMenuStyle">@style/PopupMenu.MyStyle</item>
</style>
<style name="PopupMenu.MyStyle" parent="android:Widget.PopupMenu">
<item name="android:popupBackground">@drawable/actionbar_item_background</item>
</style>
...然後繪製是一個常規選擇
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/primary"/>
<item android:drawable="@color/highlighted" android:state_pressed="true"/>
</selector>
現在,這個問題是舊的,但對於那些希望定製**操作欄溢出* *菜單背景顏色(比如在Android 4.0+上),請參閱此解決方案:http://stackoverflow.com/a/20077381/56285 – Jonik