【发布时间】:2017-03-14 09:39:55
【问题描述】:
我有一个登录片段。对于密码(Edittext),我需要禁用粘贴并选择所有选项。
我尝试了setCustomSelectionActionModeCallback 和“set longClickable”,但它们不起作用。
任何建议提前谢谢
【问题讨论】:
标签: android android-edittext copy-paste
我有一个登录片段。对于密码(Edittext),我需要禁用粘贴并选择所有选项。
我尝试了setCustomSelectionActionModeCallback 和“set longClickable”,但它们不起作用。
任何建议提前谢谢
【问题讨论】:
标签: android android-edittext copy-paste
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;
}
});
从 onCreateActionMode(ActionMode, Menu) 返回 false 将阻止启动操作模式(全选、剪切、复制和粘贴操作)。
【讨论】:
这肯定行得通
您只需在 onCreateActionMode() 中添加 mode.finish()
mEntryText.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) {
/* This is done to solve the issue of SELECT ALL PASTE etc., showing up.
mode.finish() should not be called at this point. If called, it will throw
this exception "E/DecorView[]: Destroying unexpected ActionMode instance of TYPE_FLOATING;
com.android.internal.view.FloatingActionMode@2e022bc was not the current floating action mode! Expected null"
This makes that class not to execute the rest of the code and hence the FloatingAction is never created!
I wish the the author of FloatingActionMode class gave me a method to just stop showing it. menu.clear()
is supposed to do it, but doesn't do.
*/
mode.finish(); // menu.close(); menu.clear();
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; }
});
【讨论】: