[英]Restrict/remove autofill option on long press of Edit text
我有一個編輯文本,長按它我不希望自動填充選項包含在側面復制、粘貼、選擇等中
我嘗試執行以下代碼,但對我沒有幫助
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();
}
}
我預計不應列出自動填充選項,但它與復制、粘貼、選擇等一起列出
您可以通過自定義 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;
}
});
答案幾乎和我在這里給出的完全一樣: https : //stackoverflow.com/a/59870250/7729375
唯一的區別是 removeItem 的目標 Id 現在是android.R.id.autofill
並且它需要 API 26 (Android O) 的注釋
爪哇:
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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.