[英]Show options menu button on Galaxy Nexus (Android 4.1)
我在我的應用程序中使用選項菜單。 但是當我在Galaxy Nexus上安裝應用程序時,我沒有看到選項菜單,因為默認情況下它沒有選項菜單按鈕。 如何在我的應用程序中僅為Galaxy Nexus顯示選項菜單按鈕? 使用其他手機很好,我可以選擇菜單。
在Android 3.0中,Google從使用專用菜單鍵切換到使用ActionBar
進行菜單功能。 如果您的構建目標是3.0或更高,您的菜單將默認使用ActionBar
。
如果手機上有菜單鍵,則操作欄中三個圓點圖標通常顯示的任何選項都會顯示菜單按鈕。 如果手機上沒有菜單鍵,則操作欄上將顯示所有選項。 由於菜單鍵即將消失,因此鼓勵您將ActionBar
類用於3.0及更高版本的菜單。
現在,在沒有菜單鍵的新平台上運行的舊應用程序將在最近的應用程序按鈕旁邊生成虛假菜單鍵。 這個臨時菜單鍵只有在你的構建目標是2.3.4或更低時才會出現,因為它只是出於向后兼容的原因。 (編輯:構建目標應該是任何小於,或包括API 13)
在您的情況下,您應該使用ActionBar
作為菜單,因為您是針對較新版本的Android構建的。 如果您擔心向后兼容性,那么您始終可以使用ActionBarSherlock等庫來使用舊平台上的操作欄。
你需要考慮為什么你想要一個“選項”按鈕 - 這是一個古老的,糟糕的模式,已被ActionBar
取代,這真的更好。
但是你可能需要它,出於客戶的原因(比如我需要為客戶端保留它)。 如果是這種情況,那么你可以按照我的建議(稍微編輯一下,錯誤地提到“動作欄”)
您可以將build target
設置為ICS之前的版本(即,包括API 13 / HoneyComb 3.2)。
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="13" />
這將使系統使用兼容模式設置,將overflow
圖標插入手機的底部按鈕欄 - 這應該提供您所需的功能。 按下此按鈕的響應與按Samsung Galaxy S2上的“菜單”按鈕的響應相同。
在這里,您可以看到兼容性“選項”按鈕,以及按下時顯示的菜單:
正如其他評論員所提到的,你應該考慮更好地選擇ActionBar
模式。 如果你想向后兼容,那么我推薦Action Bar Sherlock庫。
但是,如果您正在尋找快速修復,或者客戶端無法承受大型重構轉移到Action Bar模式,那么這就是實現它的方法。
如果使用操作欄 ,則選項菜單將替換為溢出。 如果沒有,您必須自己實現一個按鈕,在您自己的應用程序中的某個位置。
菜單按鈕(也稱為Shame兼容菜單 )僅顯示在應用程序目標API 13或更低版本的系統欄中
這是一種檢查設備是否具有硬件菜單鍵的方法。
// Menu key
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
hasPermanentMenuKey = hasPermanentMenuKey(context.getApplicationContext());
}
else {
// No way to know for sure...
// All devices before Honeycomb should have a menu key.
// Honeycomb device usually don't have one
hasPermanentMenuKey = Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB;
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private boolean hasPermanentMenuKey(Context context) {
return ViewConfiguration.get(context).hasPermanentMenuKey();
}
選項菜單從Android版本3.x(Honeycomb)停止。 因此,最新手機上的選項菜單按鈕不是強制性的。 所以去行動吧。 您可以使用Sherlock ActionBar
庫來支持所有平台中的操作欄。
更新:用戶ActionBarCompat
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.