【发布时间】:2012-05-07 04:05:24
【问题描述】:
我无法禁用复制粘贴选项。在三星 Galaxy S2 上,如果我单击编辑文本,会出现一个箭头,然后单击该箭头,所有选项都会出现。 onCreateContextMenu 尚未被调用。在 onUserInteration 中,我只是使用 setText() 方法清除剪贴板信息,在模拟器上它正在工作,但在真实设备上却没有。请给我这个想法。我尝试了几个小时,但无法修复它。
【问题讨论】:
标签: android
我无法禁用复制粘贴选项。在三星 Galaxy S2 上,如果我单击编辑文本,会出现一个箭头,然后单击该箭头,所有选项都会出现。 onCreateContextMenu 尚未被调用。在 onUserInteration 中,我只是使用 setText() 方法清除剪贴板信息,在模拟器上它正在工作,但在真实设备上却没有。请给我这个想法。我尝试了几个小时,但无法修复它。
【问题讨论】:
标签: android
看 How to disable edittext in android
您还可以将您的编辑文本设置为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);
【讨论】:
你可能想看看这个问题 here.
显然,通过捕获长触摸事件,您可以防止复制粘贴工具像这样激活:
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);
【讨论】: