2011-02-05 104 views
3

打開上下文菜單我使用Android來創建應用程序。 我有,我創建像下面通過點擊菜單選項

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return true; 
} 

菜單是從一個XML文件加載選項菜單的活動:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="Item1" android:id="@+id/item1" /></menu> 

當我點擊項目1,我用onOptionsItemSelected我的活動工作後點擊那樣:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
    case R.id.item1 : 
     // here, I would like to open a contextual menu 
     return true; 
    default : 
     return super.onOptionsItemSelected(item); 
    } 
} 

所以,當用戶點擊項目1我想打開一個上下文菜單。首先,我不知道是否可以直接打開上下文菜單,而不需要在屏幕上使用屏幕保持位置,就像在互聯網上顯示的幾個教程一樣。

如果可能的話如何以這種方式打開上下文菜單?

我想在我的項目1的情況下使用registerForContextMenu()openContextMenu()但我應該在參數中使用哪個視圖?

如果有人知道如何做到這一點,我想知道我該如何做。

回答

4

如果你真的想要一個上下文菜單,那麼我會使用Android設計的上下文菜單,通過長按一個給定的項目。人們習慣了這一點,應用程序不應該有所不同。

交替有點複雜。你可以做的是將你的菜單加載到一個單獨的活動中,你將其作爲一個對話框窗口(你知道用一個褪色的半透明背景)。這可以通過在manifest.xml文件中,應用Theme.Dialog風格到你的活動很容易做到:

<activity android:name=".activities.TagPopupActivity" 
      android:label="Tagging" android:theme="@android:style/Theme.Dialog"> 
       ... 
</activity> 

或者你也可以直接創建一個對話框窗口描述here。然後,通過在主列表活動中實現適當的點擊監聽器,然後當用戶單擊該項目時,您可以獲取其上下文(即單擊列表),然後檢索其ID並將其打包成一個包,並轉發到「菜單」 - 作爲彈出對話框的活動。

+1

感謝您的回答。 實際上,我從Android開始。所以我不太清楚做什麼是最好的做法。 在我的腦海裏,有兩種可能性。首先,我創建了一個上下文菜單,但顯然這對於​​用戶體驗來說不是一個好主意。 其次,我認爲通過點擊顯示我想在用戶上下文菜單中提出的選項的項目來啓動新活動。也許這是一個更好的主意。 所以,我認爲我要編寫第二個想法。 – sylsau 2011-02-05 16:34:03

2

我知道這個帖子是舊的,但這裏有另一個解決方案(快速但不真正性感)。

添加虛擬視圖,並將可見性設置爲消失,並使用此視圖觸發上下文菜單。