为EditText关闭autosuggest吗?


Answers:


122

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

将此行添加到您的EditText。

android:inputType="textFilter" 

这是一个提示。如果您希望能够使用“输入”键,请使用此行。

android:inputType="textFilter|textMultiLine"

有我的支持!实际上,当您想使EditText看起来像textView时,这确实很好用。
sir_k 2015年

1
也不能在几个Android 4.4手机中使用
voghDev

API 24 / Android 7.0:我替换android:inputType="textPersonName"为建议的文本,但仍显示建议行(带有麦克风图标)。
Neph

120
android:inputType="textNoSuggestions"  

你也最好读这个


5
请注意,“ textNoSuggestions”仅适用于API 5和更高版本。
glr 2011年

89
@gyller您是否看到任何API小于5的设备?
kreker 2011年

15
我的用户中有0.23%的用户使用1.6(API级别4)。:)
杰里米·洛根

1
尽管您随后丢失了ENTER键。如果您想使用ENTER,则可以使用android:inputType =“ textNoSuggestions | textMultiLine”
barlop

3
它禁用建议,但仍显示建议行(其中有麦克风选项)。
VipulKumar 2015年

61
android:inputType="textVisiblePassword" 

奇迹般有效


3
我不会走这条路线。这是一种黑客行为,当您说出它用于输入密码时,您不会提及键盘的其他功能可能会发生变化。使用“ text | textNoSuggestions”。
Michael Peterson

2
@ P1X3L5 textNoSuggestions不适用于许多设备。不幸的是,在Google修复此问题之前,这种黑客攻击是必要的
Tariq 2015年

1
对我来说,这更好,它还去除了键盘上方的连接条(nexus 5),这不一定适用于所有设备,但可以为某些用户提供更好的性能(还关闭了语音输入功能)
ArkadiuszCieśliński

1
.如果在该单词后面键入两个空格,则可以删除该单词末尾添加的句点char。我将其用于操作栏searchView((SearchView) MenuItemCompat.getActionView(searchItem)) .setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
Bo

这是唯一对我有用的解决方案。在浏览表单并返回到字段时,其他答案无效。谷歌真是一堆浓汤。释放不完整且未经测试的简单功能。
AngryITguy 18'Aug

41

方式:

  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"

22

我发现摆脱自动完成功能最可靠的方法是使用

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD 

在您的EditText控件上。正如查理(Charlie)在此页面上报告的其他答案中所述,

android:inputType="textVisiblePassword"

是此标志的XML版本。

您可以将此标志与

InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS

我一直在使用不带InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD的InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS,该功能适用​​于大多数手机,但随后遇到了一部三星手机,但该手机仍在自动完成。

Android以编程方式在模拟器中为EditText禁用自动完成/自动建议

建议使用InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD。

我尝试了此操作(以及InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS),它确实有效。您可以看到为什么即使是一部电话,如果它可能没有提示您不希望自动完成功能,也必须允许将其禁用用于密码字段。没有屏住呼吸,这可能是从此类手机获得我们想要的东西的最佳方法。

在我的某些设备上,此标志对此字体做了些微更改-最明显的是,它可以更清楚地区分零(0)和Oh(O),这显然对于显示密码很重要。但是,至少它能起作用,而且新字体并不吸引人。

即使我发现该建议的帖子过旧,但我测试过的手机还是最近的-Sprint的三星Galaxy Note II(SPH-L900)股票Android 4.1.2。选择的键盘是“三星键盘”,当客户从Sprint收到该手机时,这显然是该手机的默认键盘。因此,至少在一些重要的三星手机系列中,这个问题显然多年来一直持续存在。

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


3
不适用于具有当前固件的Samsung S3。哎呀
显示名称

@SargeBorsch:您是说TYPE_TEXT_VARIATION_VISIBLE_PASSWORD连同TYPE_TEXT_FLAG_NO_SUGGESTIONS仍对S3执行自动完成功能吗?我是这样,您在使用股票键盘吗?我没有S3,但过去曾在S3上尝试过我的应用(使用上述方法),但没有自动完成功能。我有一个运行Android 4.4(Cyanogenmod)的S4,它也不会自动完成。
2014年

@SargeBorsch:如果您想尝试使用你的S3上面的方法,这里是我的应用程序: play.google.com/store/apps/... 是否有兴趣听听是否校验字字段在该底部应用(使用上述标志)会尝试在您的设备上自动完成。TIA。
卡尔

谢谢,很快就会查看
显示名称

>“您是说TYPE_TEXT_VARIATION_VISIBLE_PASSWORD连同TYPE_TEXT_FLAG_NO_SUGGESTIONS仍对S3执行自动完成吗?” 对,就是这样。尽管也有电子邮件类型,因为它是电子邮件输入…
显示名称

20

对于android 8.0或更高版本,此代码不起作用,对于自动完成的textview该代码也不起作用,因此我建议您使用以下代码禁用8.0或更高版本中的自动建议android vesrion使用edittext android的此属性 : ImportantForAutofill =“ 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" />

对于像这样的自动完成文本视图,请使用以下字段禁用自动建议android:importantForAutofill =“ 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" />

2
太棒了!这是唯一对我有用的东西。
Laurel Thomson

@MaheshKeshvala是唯一对我有用的东西,为挽救我的生活而表示支持。
拉维·瓦尼亚

自动填充不是键盘自动完成功能,它们是不同的功能。自动填充由操作系统处理,而自动完成由键盘开发人员处理(希望如此)。
milosmns

10

您可以使用以下方法解决此问题:

android:importantForAutofill="no" 

Android O具有支持字段自动填充的功能,只需在xml中使用此功能,它将禁用自动填充提示


7

由于这仍然是一个问题,因此我将发布此答案。android:inputType =“ textVisiblePassword”可以工作,但这是不可取的,首先是因为它是对输入的错误表示,其次是因为它禁用了手势输入!

相反,我不得不同时使用两个标志textNoSuggestions和textFilter。任一个都不起作用。

android:inputType="textCapSentences|textFilter|textNoSuggestions"

textCapSentences是出于其他原因。但是此inputType保留了滑动输入并禁用了建议工具栏。


7

我在运行4.4.4的三星手机上得到了这个东西。这解决了我的问题

android:inputType="text|textVisiblePassword|textNoSuggestions"

与运行8.1的三星相同。唯一对我有用的是android:inputType =“ textVisiblePassword | textNoSuggestions”
Eino Gourdin

4

好的,问题是-在Eclipse中,您不会得到有关名为标志的建议:textNoSuggestion

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

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

并感谢jasta00帮助我解决了这一问题。


6
这完成了工作。.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
w.donahue 2011年

2
同意,使用常量而不是值
David Snabel-Caunt 2011年

1
@ kape123您无法在xml中设置android:inputType =“ textNoSuggestions”,因为您的构建目标低于5 api
kreker 2012年

请注意,对于某些三星手机,InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS无法关闭标准键盘自动完成功能。:一个人建议在此,而旧文章用InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD stackoverflow.com/questions/6281514/...
卡尔


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

这将为您提供帮助。


1
    // 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);
    }

0

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


EditText没有setThreshold(),能否解释一下?
behelit
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.