Android以编程方式禁用模拟器中的EditText的自动完成/自动build议

针对Android 2.2

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

closures自动提示的EditText?

Android:多行&EditText中没有自动build议

我已经尝试了以下变化的build议:

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); 

所有这些工作在我testing过的大多数设备上(Droid X,Droid 2,Thunderbolt,Incredible),但是不能在模拟器和至less一个设备(Samsung GT i5500)上工作。

有没有其他的方式来以一种模拟器和某些设备将识别和尊重的方式以编程方式禁用EditText的autocomplete / autosuggest?

对于Vodafone 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”

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

 android:inputType="text|textNoSuggestions" 

如果这两个方法都不行,上述方法都无法工作,那么仿真器和其他设备几乎肯定会出现问题,您应该直接与制造商联系。

另请参见: android:inputType (请注意, EditTextTextView的子TextView ,这也是为什么此属性也适用于EditTexts )。

我已经尝试了以上所有,以上都没有帮助我。 我已经通过可用的InputType进行search,并且提出了一个解决scheme,恰好是TYPE_TEXT_FLAG_AUTO_COMPLETE

mEditText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);

从其描述:

这通常意味着input方法本身不应显示候选项,但可以期望编辑器从InputMethodSession.displayCompletions()提供自己的完成项/候选项。

我没有指定任何完成设置 ,因此我没有得到任何自动build议

PS。 在上面提到的标志InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD也这样做,但是它也禁止在键盘上切换语言。

亲自,这个代码帮助我:

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

当我设置文本时,我想禁用build议,所以我删除适配器,并在我调用setText ,我将它返回。

所以如果你想禁用build议只使用:

 autoCompleteTextView.setAdapter(null); 

您可以使用类AutoCompleteTextView并设置不包含AutoCompleteTextView类参考的适配器

  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[] {""}; } 

android:inputType="textNoSuggestions|textVisiblePassword"使用android:inputType="textNoSuggestions|textVisiblePassword"可以解决这个问题。

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

我猜测,要在单个应用程序中禁用这个function是非常困难的,而不需要深入了解键盘处理和语言支持。

您还可以使用以下function在任何编辑文本上禁用自动build议。

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

这对我有效。

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

在input'ininput'事件中,运行以下函数:

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

我手动运行自动完成,它的工作原理

谢谢大家的帮助

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

 android:inputType="textFilter"