如何关闭EditText中的建议提示?

41

我该如何在 Android 的 EditText 中关闭建议功能?

8个回答

116
android:inputType="textNoSuggestions"

根据这里,它可能会或可能不会被输入法(键盘)支持。

但是,这似乎更常常有效。

android:inputType="textNoSuggestions|textVisiblePassword"

3
"android:inputType="textNoSuggestions|textVisiblePassword" 对我的 Wildfire 和 Desire HD 很有用。谢谢!" - JOG
7
请注意,这将会影响到Swype键盘的使用。在输入完一个单词后,空格不会自动添加。此外,语音转文字功能也无法使用,因为Swype键盘将其视为“密码字段”,已被禁用。 - Donn Felker
1
似乎 textVisiblePassword 也会导致日语键盘的问题。对此有什么想法吗? - Georg
2
这也破坏了字符大小写功能。 - desgraci
1
它还会破坏平板电脑上的触笔输入,因为它“明确告诉软件键盘,该字段的内容不应添加到任何词汇表中,也不应通过网络同步、添加到使用统计数据或类似内容”来源 - Ivan Mir
显示剩余2条评论

32

已经在Yoni Samlan发布的链接中描述了这个问题。你应该正确阅读文档 ;)

有一个名为setInputType的方法,你只需要调用它并传入相应参数即可。

edittext.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

4
HTC Desire 不支持此功能。 - Kurru
13
在我的Desire和Wildfire手机上,当在xml中设置android:inputType="textNoSuggestions"时无效。但是,在代码中设置mEditText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS)却能够很好地工作。使用这两种方法在我Droid手机上没有问题。 - ol_v_er
2
@ol_v_er:对我来说,这两种解决方案都不起作用,在带有黑客键盘的Galaxy Note上。 - Luis A. Florit
@LuisA.Florit 的输入类型标志是键盘的一个标志,由键盘的实现来决定如何处理它。 - Dandre Allison
2
重要的是不要将其与TYPE_CLASS_TEXT进行“或”操作,否则它会覆盖“无建议”标志。 - scorpiodawg

17

这似乎效果更好;

edittext.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

即,可见密码和无建议输入类型会进行OR操作。

为了确保您还可以将此属性添加到您的编辑文本中。

android:inputType="textNoSuggestions|textVisiblePassword"

6

android:inputType="textNoSuggestions"。请参阅xml属性文档和这篇Android开发者的博客文章

该代码指定了在Android应用程序中输入文本时,输入框将不会给出任何建议。更多信息请参见上述链接。

谢谢您的回答。但是我正在动态创建EditText,我想在Java代码中做同样的事情。请帮助我。 - James
曾经说得对 - 大多数可在Android xml中设置的属性都有相应的set [attributeName]方法,例如setInputType。 - Yoni Samlan

2

如果您在活动中使用InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS,它将正常工作。对于DialogFragment,请按照以下方式在onActivityCreated()处理程序中放置InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    EditText editTextUsername =  (EditText)dialogView.findViewById(R.id.txtUsername);
    editTextUsername.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
}

1
如果Editext/TextInputEditText有多于1行的文本,则添加textMultiLine。
 android:minLines="10"
 android:inputType="textNoSuggestions|textMultiLine|textVisiblePassword"

1

使用下一个解决方法-我注意到在发送电子邮件时,没有出现任何建议-

android:inputType="textCapSentences|textNoSuggestions|textEmailAddress"

这不是100%,但它正在工作 :)

工作完美! - Krupa Kakkad

0
这是对我有效的解决方案:
android:importantForAutofill="no"

此标志与Autofill框架(用于用户名和密码),而非文本建议相关。 - Remc4
你是对的 @Remc4。你可以使用 android:inputType="textNoSuggestions" 来禁用文本建议。 - francis
令人惊讶的是,这没有任何影响。这就是为什么每个人也会添加textVisiblePassword标志的原因。 - Remc4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接