我无法禁用复制粘贴选项。 在三星Galaxy S2上,如果我单击Edittext,将出现一个箭头,单击该箭头,所有选项都将出现。 onCreateContextMenu 尚未被调用。 在 onUserInteration 中,我只是使用 setText() 方法清除剪贴板信息,在模拟器上它可以工作,但在真实设备上不起作用。请给我这个主意。我正在尝试几个小时,但无法修复它。
如何在安卓中禁用编辑文本
您还可以将编辑文本设置为android:editable="false"
将其添加到要禁用复制粘贴选项的编辑文本中。
edittext.setCustomSelectionActionModeCallback(new 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;
}
});
要禁用复制粘贴,您需要停止选择,然后插入。使用以下代码,其 100% 工作代码。
//This disable the paste
editText.setCustomInsertionActionModeCallback(new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
menu.clear();
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) {
}
});
//This Disable selection of text
editText.setCustomSelectionActionModeCallback(new Callback() {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
menu.clear();
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) {
}
});
editText.setLongClickable(false);
editText.setTextIsSelectable(false);
你可能想看看这个问题这里。
显然,通过捕获长触摸事件,您可以阻止复制粘贴工具像这样激活:
OnLongClickListener mOnLongClickListener = new OnLongClickListener()
{
@Override
public boolean onLongClick(View v)
{
// prevent context menu from being popped up, so that user
// cannot copy/paste from/into any EditText fields.
return true;
}
};
然后设置您刚刚在 EditText 上创建的 onLongClickListener,如下所示:
myEditTextView.setOnLongClickListener(mOnLongClickListener);