关闭 EditText 的自动建议?

有没有一种方法可以通过编程关闭在您键入 EditText 时弹出的自动建议列表?

110284 次浏览

好的,问题是——在 Eclipse 中,您不会得到关于标志名为: textNo  建议

而且不能在 main.xml (设计 UI 的地方)中设置它,因为 inputType 的属性无法识别。因此,您可以使用 int const 在代码中设置它:

EditText txtTypeIt = (EditText) this.findViewById(R.id.txtTypeIt);
txtTypeIt.setInputType(524288);

感谢 Jasta00帮我找出这个问题的答案。

我也有同样的问题,但是我仍然想在我的 XML 文件中设置这个选项,所以我做了一些研究,直到我自己发现它。

将此行添加到 EditText 中。

android:inputType="textFilter"

这里有一个提示。如果你想使用“ Enter”键,请使用这一行。

android:inputType="textFilter|textMultiLine"
android:inputType="textNoSuggestions"

还有你最好读一下 这个

EditText emailTxt=(EditText)findViewById(R.id.email);
emailTxt.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

这个能帮你。

您可以简单地使用 EditText 的 setThreshold()方法。当您不想显示预测时,将阈值设置为100。如果您想重新激活显示预测,请根据您的需要将其设置为一个小的 int,比如1或2。

android:inputType="textVisiblePassword"

非常有效

我发现摆脱自动补全的最可靠方法是使用

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD

正如查理在本页的另一个答案中所报告的那样,

android:inputType="textVisiblePassword"

是此标志的 XML 版本。

您可以将此标志与

InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS

我一直在使用 InputType.TYPE _ TEXT _ FLAG _ NO _ SUGGESTION 没有 InputType.TYPE _ TEXT _ VARIATION _ VISIBLE _ PASSWORD,它适用于大多数手机,但后来我遇到了一个三星手机,我仍然得到自动完成。

Android 以编程方式在模拟器中禁用 EditText 的 autocomplete/auto赔偿

建议使用 InputType.TYPE _ TEXT _ VARIATION _ VISIBLE _ PASSWORD。

我尝试了这种方法(与 InputType.TYPE _ TEXT _ FLAG _ NO _ SUGGESTION 一起) ,它奏效了。您可以看到为什么即使一部手机可能不采取暗示,您不希望自动完成将 允许它禁用一个密码字段。除了屏住呼吸,这可能是从这种手机中得到我们想要的东西的最好方法。

在我的一些设备上,字体被这个标志稍微改变了一下——最明显的是为了更清楚地区分0和 O,这对于显示密码显然是很重要的。但至少它起作用了,而且新的字体也不是没有吸引力。

尽管我发现这个建议的帖子已经过时了,但我测试的手机是最近的—— Sprint 推出的三星 Galaxy Note II (SPH-L900)安卓4.1.2手机。选择的键盘是“三星键盘”,显然这是这款手机的默认时,客户收到它从斯普林特。因此,这个问题显然已经持续了多年,至少在三星的一些重要手机系列。

对于那些像我一样没有三星测试设备的人来说,这可能是重要的信息。

android:inputType="text|textNoSuggestions"

由于这仍然是一个问题,我将发布这个答案。InputType = “ textVisiblePassword”可以工作,但是它不受欢迎,首先是因为它是输入的不正当手法引诱,其次是因为它禁用了手势输入!

相反,我必须同时使用 textNoAdvisals 和 textFilter 两个标志,单独使用这两个标志都不起作用。

android:inputType="textCapSentences|textFilter|textNoSuggestions"

TextCapSentences 是出于其他原因,但是这个 inputType 保留了滑动键入并禁用了建议工具栏。

方法:

  1. 程序化的
editText.inputType = InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS
  1. XML
android:inputType="textNoSuggestions"

如果您已经设置了一些标志,那么:

  1. 程序化的
inputType = if (disableSuggestions) {
InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS or inputType
} else {
inputType and InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS.inv()
}
  1. XML
android:inputType="textNoSuggestions|textPassword"

我在三星手机上运行4.4.4,这解决了我的问题

android:inputType="text|textVisiblePassword|textNoSuggestions"

对于安卓版本8.0或更高版本,此代码不起作用 并为自动完成文本视图也这个代码不工作,所以我会建议你使用下面的代码为 禁用8.0或以上版本的自动建议 android vesrion 使用 edit text < em > android: important antForAutofill = “ no” 的这个属性

                   <EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:enabled="false"
android:focusable="false"
android:imeOptions="actionDone"
android:maxLength="80"
android:maxLines="1"
android:textColor="@color/colorBlack"
android:textColorHint="@color/colorBlack"
android:importantForAutofill="no"
android:textSize="@dimen/_12sdp"
app:bFontsEdt="light" />

对于像这样的自动完成文本视图,使用这个字段禁用自动建议 重要的自动填充 = “ no”:

      <AutoCompleteTextView
android:id="@+id/autocompleteEditTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/_3sdp"
android:layout_marginTop="@dimen/_5sdp"
android:background="@null"
android:imeOptions="actionDone"
android:singleLine="true"
android:text=""
android:textColor="@color/colorBlack"
android:textColorHint="@color/colorGrayDark"
android:importantForAutofill="no"
android:textSize="@dimen/_12sdp" />
    // 100% correct & tested
txtKey = (EditText) view.findViewById(R.id.txtKey);
txtKey.setPrivateImeOptions("nm");
txtKey.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
txtKey.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);
}

这招对我很管用

android:importantForAutofill="no"
android:inputType="none|textNoSuggestions"

如果你不想要建议,你可以用“无”

InputType = “ none | numberDecimal”

使用 TextWatcher 找到一个很好的自动建议解决方案。 建议将为用户出现,但用户将不能接受他们。

/*...*/


editText.addTextChangedListener(textWatcher);


/*...*/
}


private final TextWatcher textWatcher = new TextWatcher() {
    

long timestamp = 0L;
    

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
    

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (!longClickable && count - before > 1 && timestamp < System.currentTimeMillis()) { // disable suggestions click
String str = s.toString();
str = str.substring(0, before);
timestamp = System.currentTimeMillis() + 20;
inputText.setText(str);
inputText.setSelection(inputText.getText().length());
}
}


@Override
public void afterTextChanged(Editable s) {
}
};

当你不需要复制/粘贴功能的长时间点击时,这个工具也很好用