禁止在EditText上从剪贴板粘贴建议



为了防止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中。如何禁用或忽略粘贴的内容?

要禁用键盘、键盘扩展、操作菜单和任何其他类型的所有类型的过去复制,您可以在EditText中添加一个textChangeListener,并检查方法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?, start: Int, before: Int, count: Int){}
})

如果有人一次超过一个字符,则此解决方案有效。祝好运

最新更新