我有一个编辑文本,长按它时,我不希望将自动填充选项包括在侧面复制,粘贴,选择等中
我尝试执行以下代码,但对我没有帮助
if (Build.VERSION.SDK_INT >= 26) {
AutofillManager autofillManager = cxt.getSystemService(AutofillManager.class);
if (null != autofillManager) {
view.setImportantForAutofill(IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS);
autofillManager.disableAutofillServices();
autofillManager.cancel();
}
}
我希望“自动填充”选项不应列出,但应与复制,粘贴,选择等一起列出
答案 0 :(得分:0)
您可以通过自定义EditText类来执行此操作,只需执行以下步骤:
1)扩展EditText
类,
2)覆盖isSuggestionsEnabled()
和return false
,
3)创建一个canPaste()
方法并返回false
。这是方法隐藏。
如果仍然无法使用,您也可以在EditText中禁用长按。
mEditText.setLongClickable(false);
并通过以下方法返回false来禁用上下文菜单的显示:
mEditEext.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;
}
});
答案 1 :(得分:0)
答案与我在此处给出的答案几乎完全相同: https://stackoverflow.com/a/59870250/7729375
唯一的区别是removeItem的目标ID现在为android.R.id.autofill
,并且它需要API 26(Android O)的注释
Java:
ActionMode.Callback callback = new ActionMode.Callback() {
@Override
@TargetApi(26)
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
if (menu != null) {
menu.removeItem(android.R.id.autofill);
}
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
};
mEditText.setCustomInsertionActionModeCallback(callback);
mEditText.setCustomSelectionActionModeCallback(callback);
科特琳:
val callback = object : ActionMode.Callback {
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
return false
}
@TargetApi(Build.VERSION_CODES.O)
override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
menu?.removeItem(android.R.id.autofill)
return true
}
override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
return true
}
override fun onDestroyActionMode(mode: ActionMode?) {}
}
然后在EditText中使用站点:
fun preventPaste() {
customInsertionActionModeCallback = callback
customSelectionActionModeCallback = callback
}