2016-03-28 59 views
2

我想實現我自己的自定義視圖(不是爲了擴展菜單項),我打算每次使用contextMenu啓動時都會顯示一個工具欄,並在完成時隱藏它。刪除CAB但保留webview文本選擇

的問題是:只有回答出如何清除/充氣另一個菜單在默認actionMode菜單

什麼i`ve試過到目前爲止:

- >Use a custom contextual action bar for WebView text selection

重寫回調在WebView

@Override 
    public ActionMode startActionMode(ActionMode.Callback callback) { 
     callback2 = new customCallBack(); 
     return super.startActionMode(callback2); 
    } 



public class customCallBack implements ActionMode.Callback { 

     @Override 
     public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
      return false; 
     } 

     @Override 
     public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
      return false; 
     } 

     @Override 
     public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
      return false; 
     } 

     @Override 
     public void onDestroyActionMode(ActionMode mode) { 

     } 
    } 

更改返回false爲真,不會導致所需的行爲,即隱藏駕駛室

覆蓋OnLongClick也不是一個選項,因爲它禁用當前的選擇。

+0

我想要弄清楚同樣的事情。我經歷了和你一樣的思考過程。這太瘋狂了,沒有簡單的方法來做到這一點 –

回答

1

對我來說(僅限於在Android L +)的工作正在清理從上下文動作條的所有菜單項由Use a custom contextual action bar for WebView text selection

啓發活動

@Override 
public void onActionModeStarted(ActionMode mode) { 
    if (mActionMode == null) { 
     mActionMode = mode; 
     Menu menu = mode.getMenu(); 
     // Remove the default menu items (select all, copy, paste, search) 
     menu.clear(); 
    } 
    Toast.makeText(this, "onActionModeStarted", Toast.LENGTH_SHORT).show(); 
    super.onActionModeStarted(mode); 

} 

@Override 
    public void onActionModeFinished(ActionMode mode) { 
     mActionMode = null; 
     Toast.makeText(this, "onActionModeFinished", Toast.LENGTH_SHORT).show(); 
     super.onActionModeFinished(mode); 
    } 

而且我沒」的唯一途徑能夠使用popupWindow或對話框或對話框片段實現自定義菜單。

所以簡單地把它與webView在一個框架佈局,並與其可見性和保證金髮揮

+0

如果你選擇更多的文本(即滾動選擇文本光標),這將無法工作,然後所有默認菜單再次出現。 –