我有一個EditText,我希望用戶能夠選擇一些文本並將一些基本格式應用於所選文本(粗體,斜體等)。不過,我仍然想要標準的複製,剪切,粘貼選項來顯示。我在Android文檔中的某個地方閱讀過,爲此,應該在EditText上調用setCustomSelectionActionModeCallback()並將其傳遞給ActionModeCallback(),這就是我所做的。這裏是我的代碼:溢出按鈕強制操作模式完成
在我的活動的onCreate()方法:
myEditText.setCustomSelectionActionModeCallback(new TextSelectionActionMode());
回調聲明:
private class TextSelectionActionMode implements ActionMode.Callback {
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
menu.add("Bold");
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
}
我遇到的問題是,當我點擊溢出按鈕(訪問我的「粗體」菜單項),ActionMode立即關閉。如果我將它設置爲始終顯示爲一個動作,使用這個:
MenuItem bold = menu.add("Bold");
bold.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS);
它工作正常,我可以點擊它(儘管它顯然什麼都不做)。我在這裏錯過了什麼?
編輯:只是想補充一點,如果我真的膨脹一個菜單,而不是通過編程添加菜單項,我遇到了完全相同的問題。但是,如果我強迫它始終表現爲行動,問題就會消失。
好的,你如何防止這個問題? – MBulava 2013-10-15 16:44:30