2010-06-05 40 views
9

我有一個ListActivity,我想爲每個列表元素實現上下文菜單。我知道常用的方法是在長按/輕按上顯示上下文菜單。我想知道是否有方法顯示按鍵上每個元素的上下文菜單(最好是菜單鍵)。 要更改我的問題,如何通過按菜單鍵(或任何其他鍵)來觸發上下文菜單而不是選項菜單。如何在按鍵上實現上下文菜單而不是長按/輕按

回答

8

要打開上下文菜單,請致電openContextMenu()。要通過密鑰觸發它,請覆蓋onKeyDown()onKeyUp()

這樣說,我真的不推薦這個。

用戶抱怨Android沒有UI標準。相反,Android具有UI慣例,允許開發人員獲得一些自由(更重要的是,讓您的應用程序在Android Market上市時不會遇到障礙)。

但是,這些用戶的觀點非常有效 - 當應用程序決定停用UI切線時,他們的體驗會受到損害。決定讓菜單鍵彈出一個上下文菜單將是一個這樣的切線。對於初學者來說,在觸摸屏設備上,這不會很好,因爲您的ListView中沒有選定的項目,所以用戶不清楚MENU所涉及的內容。

我懷疑是否有更好的解決方案來解決您認爲您以這種方式解決的任何問題。

+2

我同意,需要有一些正規的約定開發商遵循使消費者的Android使用體驗,從一個更一致應用到另一個。但是,對於這個具體的問題,我相信有些情況下它是合適的,我自己也是這樣做的。 – mtmurdock 2010-06-05 22:45:32

+1

@mtmurdock:歡迎您提出意見。核心Android團隊似乎沒有分享它:http://developer.android.com/guide/practices/ui_guidelines/menu_design.html – CommonsWare 2010-06-05 23:12:13

6

我實際上爲我的一個應用程序做了同樣的事情,因爲它對我的應用程序有意義。最好也是最簡單的方法是爲listActivity重寫onListItemClick()。這比onKeyDown()更好,因爲它專門針對有問題的列表項目(視圖),並且僅適用於列表項目,而不適用於屏幕的其餘部分。

onListItemClick(ListView l, View v, int position, long id) 
{ 
    v.showContextMenu(); 
} 

那麼所有你需要做的覆蓋上下文菜單的方法和你的黃金

相關問題