背景:Android原生的EditText控件,在输入内容后,如果长按内容会在光标处出现菜单选择,如:复制、粘贴、全选等。一些定制化平台是不能够出现此类原生界面的,如果每个App内部单独对此控件进行处理,效率会很低下,而且不能保证修改后的效果一致,因此需要我们对EditText控件进行统一处理。
思路:对原生EditText控件进行修改,使菜单准备弹出的时候将其清空,达到隐藏的效果。
public EditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
// 添加 setCustomSelectionActionModeCallback 方法
setCustomSelectionActionModeCallback(new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// 将菜单清空
menu.clear();
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
});
}