Android以编程方式为模拟器中的EditText禁用自动完成/自动提示

时间:2011-06-08 15:42:35

标签: android emulation android-edittext autosuggest

定位Android 2.2

我已阅读以下问题的答案:

Turn off autosuggest for EditText?

Android: Multiline & No autosuggest in EditText

我在建议中尝试了以下变体:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER);

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_VARIATION_FILTER);

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

所有这些都适用于我测试过的大多数设备(Droid X,Droid 2,Thunderbolt,Incredible),但不适用于仿真器和至少1台设备(Samsung GT i5500)。

有没有其他方法以编程方式以模拟器和某些设备识别并尊重的方式禁用EditText的自动完成/自动提示?

12 个答案:

答案 0 :(得分:45)

对于沃达丰845(2.1),华为8800(2.2)设备,textVisiblePassword似乎阻止了单词预测。

    vendorId.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

  

机器人:的inputType = “textVisiblePassword”

答案 1 :(得分:23)

在布局XML中,将以下属性添加到EditText

android:inputType="text|textNoSuggestions"

如果这个以及上述方法都不起作用,那么这几乎肯定是模拟器和其他设备的问题,您应该直接联系制造商。

另请参阅:android:inputType(请注意EditTextTextView的子类,这就是此属性也适用于EditTexts)的原因。

答案 2 :(得分:15)

我已经尝试了以上所有内容,但上述都没有真正帮助我。我搜索了可用的 InputTypes ,我想出了一个解决方案,恰好是 TYPE_TEXT_FLAG_AUTO_COMPLETE

mEditText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);

从描述中:

  

这通常意味着不应该显示输入法   候选人本身,但可以期待编辑提供自己的   InputMethodSession.displayCompletions()的完成/候选人。

我没有指定任何完成集,因此我没有任何自动建议

PS。上面推荐中提到的标记InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD也有这个技巧,但它也禁用切换键盘中的语言。

答案 3 :(得分:5)

就个人而言,这段代码可以帮助我:

autoCompleteTextView.setAdapter(null);
autoCompleteTextView.setText(address);
autoCompleteTextView.setAdapter(adapter);

我想在设置文字时禁用建议,因此我删除了适配器,在我致电setText后,我将其退回。

所以如果你想禁用建议,请使用:

autoCompleteTextView.setAdapter(null);

答案 4 :(得分:2)

您可以使用AutoCompleteTextView类并设置不包含任何内容的适配器 AutoCompleteTextView Class Reference

例如

 public class CountriesActivity extends Activity {
   protected void onCreate(Bundle icicle) {
     super.onCreate(icicle);
     setContentView(R.layout.countries);

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
             android.R.layout.simple_dropdown_item_1line, COUNTRIES);
     AutoCompleteTextView textView = (AutoCompleteTextView)
             findViewById(R.id.countries_list);
     textView.setAdapter(adapter);
   }

   private static final String[] COUNTRIES = new String[] {""};
 }

答案 5 :(得分:2)

使用android:inputType="textNoSuggestions|textVisiblePassword"进行Edittext修复问题。

答案 6 :(得分:1)

我在模拟器中遇到了同样的问题。在测试时,我意识到出现的不是正常的自动完成,而是一个特殊的亚洲字符预览(可能是因为它需要多个键来生成一个亚洲字符)。所以我通过将语言设置为英语来解决这个问题。我认为我所看到的是“语言和键盘”中“日语IME”设置下列出的“按键预览”选项。

我猜测在单个应用程序中禁用此功能将非常困难,而无需深入研究键盘处理和语言支持。

答案 7 :(得分:1)

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

答案 8 :(得分:1)

您还可以使用以下功能禁用任何edittext上的自动建议。

<EditText>
android:inputType="textNoSuggestions|textVisiblePassword"
</EditText>

这对我有用。

答案 9 :(得分:0)

尝试一下 android:importantForAutofill =“否”

答案 10 :(得分:-1)

输入中的

'oninput'事件,运行以下函数:

function RefreshAutoComplete(elm) {
elm.keyup();
elm.focus();
}

我手动运行自动完成功能

谢谢大家的帮助

答案 11 :(得分:-3)

接受正确的答案是错误的。要禁用自动建议,请将以下属性添加到EditText XML

android:inputType="textFilter"