4

Nexus的顯示屏幕如下:(這裏我按在右上角的3點到下拉菜單)覆蓋菜單按鈕動作

enter image description here

我有一個菜單出現在屏幕右上角。 手機顯示菜單如下(這隻有當我按下手機上的菜單按鈕時發生):

enter image description here

我想在手機相同的菜單行爲在平板電腦,其中,在我可以在屏幕右上角顯示菜單。我的問題是,是否有任何方法可以覆蓋菜單充氣行爲 - 即使在手機中也必須從屏幕的右上角位置顯示菜單

+4

你真的不應該與菜單按鈕一塌糊塗。不同的製造商對菜單按鈕有不同的解決方案,如果你開始移動它,用戶將不知道發生了什麼。 – span

+3

此外,在許多電話上,操作欄*將*顯示在右上角。這不是手機與平板電腦的問題,而是該設備是否具有專用的屏幕外MENU按鈕。請通過接受默認行爲來幫助您的用戶,從而遵循其設備上所有其他應用程序所採用的模式。 – CommonsWare

+0

@CommonsWare感謝您的輸入。用戶將如何知道在電話選項中有要選擇的菜單? –

回答

5

這有點複雜,但在這裏的總體思路是:

public void showPopup(View v) { 
PopupMenu popup = new PopupMenu(this, v); 
MenuInflater inflater = popup.getMenuInflater(); 
inflater.inflate(R.layout.menu, popup.getMenu()); 
popup.show(); 

}

在這種方法中v是你希望你的菜單出現的觀點。

您將需要Override菜單按鈕,以便當用戶按下它時出現菜單。請執行下列操作

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     //Put the code for an action menu from the top here 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

然後其他的都是一樣,因爲它是你的正常菜單(我認爲)

+1

我會建議onKeyUp事件,因爲我已經嘗試onKeyDown,並且一旦釋放我的菜單按鈕,我的PopupMenu消失。 –