2014-05-17 19 views
4

我試圖提出一個自定義操作欄,而長按一個文本視圖。我的菜單有超過5個項目,導致一些項目出現在溢出菜單下。在TextView上選擇溢出菜單項CustomActionModeCallback

當我按下溢出圖標時,操作欄被破壞,我無法選擇溢出內的任何項目。

ActionMode.Callback mActionModeCallback = new ActionMode.Callback() { 

     public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
      MenuInflater inflater = mode.getMenuInflater(); 
      inflater.inflate(R.menu.add_rule_menu, menu); 
      return true; 
     } 

     public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
      for (int i = 0; i < menu.size(); i++) { 
       MenuItem item = menu.getItem(i); 
       if (!mOptionsList.contains(item.getItemId())) 
        item.setVisible(false); 
      } 
      return false; 
     } 

     // Clicking on overflow button does not trigger this method at all. 
     public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
      switch (item.getItemId()) { 
      // Rest of the code 
      } 
     } 

     public void onDestroyActionMode(ActionMode mode) {} 
    }; 

    textView.setCustomSelectionActionModeCallback(mActionModeCallback); 
+0

是不是因爲onActionItemClick公共無效onDestroyActionMode(ActionMode模式){}調用? –

+0

有沒有辦法避免這種情況? –

+0

刪除該電話或發表評論。處理你的項目點擊併發布,只需調用mode.finish()。見http://www.survivingwithandroid.com/2013/04/android-listview-context-menu.html –

回答

5

filed an issue about this years ago,它從來沒有得到解決。

一個俗氣的解決方法是使用嵌套動作模式。通過這個,我的意思是你有一個動作模式中的項目完成當前模式並開始一個新的模式,以提供「下鑽菜單」效果。我在my recently-resuscitated RichEditText widget中使用它,它提供了格式化文本的動作模式。我通過setCustomSelectionActionModeCallback()將「格式」項添加到默認操作模式。點擊「格式」打開另一個動作模式,提供粗體和斜體等選項,以及進一步深入瞭解字體變化。

+1

感謝您的。在實施時,我可能不得不採取一些解決方法。在Android開發中長期陷入僵局之後,我仍然看到這些天真的bug在SDK中無處不在。 –