问题描述
为防止EditText从剪贴板接收内容,我禁用了长按和可选择的文本,并清除了操作模式菜单:
EditText editText = findViewById(R.id.et);
editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode,Menu menu) {
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public boolean onCreateActionMode(ActionMode mode,Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode,MenuItem item) {
return false;
}
});
editText.setTextIsSelectable(false);
editText.setLongClickable(false);
问题是我不断收到剪贴板建议,这些建议在被选中时会粘贴到我的EditText中。如何禁用此内容或仅忽略此粘贴内容?
解决方法
要禁用过去从键盘,键盘扩展名,操作菜单和任何其他类型进行的所有复制,您可以将textChangeListener添加到EditText并按如下所示签入方法beforeTextChanged
:
editText.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {}
override fun beforeTextChanged(s: CharSequence?,start: Int,count: Int,after: Int) {
if (after - count > 1) {
editText.setText(s)
editText.setSelection(s.toString().length)
}
}
override fun onTextChanged(s: CharSequence?,before: Int,count: Int){}
})
如果某人一次超过一个字符,则此解决方案有效。祝你好运