gyoda
gyoda

Reputation: 1053

Android programmatically disable autocomplete/autosuggest for EditText in emulator

Targeting Android 2.2

I have read the answers to the following questions:

Turn off autosuggest for EditText?

Android: Multiline & No autosuggest in EditText

I have tried the following variations on the suggestions:

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

All of these work on most devices I've been testing (Droid X, Droid 2, Thunderbolt, Incredible) but don't work on the emulator and at least 1 device (Samsung GT i5500).

Is there any other way to programmatically disable the autocomplete/autosuggest for an EditText in a way the emulator and certain devices will recognize and respect?

Upvotes: 50

Views: 59084

Answers (13)

Isaac Riley
Isaac Riley

Reputation: 298

To turn off auto corrections/suggestions on EditText programmatically:

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

Note: the aforementioned works for SearchView etal.

Upvotes: 0

bob
bob

Reputation: 2734

For Vodafone 845 (2.1), huawei 8800 (2.2) devices, textVisiblePassword seems to prevent word prediction.

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

or

android:inputType="textVisiblePassword"

[Edit] this answer is quite old and I don't have the environment anymore to test to get up-to-date info for comments here, sorry.

Upvotes: 49

Yash Bhardwaj
Yash Bhardwaj

Reputation: 57

Try This android:importantForAutofill="no"

Upvotes: 0

itzhar
itzhar

Reputation: 13041

personally, this code help me:

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

I want to disable suggestions when I set text so I remove the adapter and after I call setText, I return it.

so if you want to disable suggestion just use:

autoCompleteTextView.setAdapter(null);

Upvotes: 7

Mridul Shrivastava
Mridul Shrivastava

Reputation: 109

Using android:inputType="textNoSuggestions|textVisiblePassword" for Edittext fix the problem.

Upvotes: 2

Mridul Shrivastava
Mridul Shrivastava

Reputation: 109

You can also use following for disabling auto suggestion on any edittext.

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

This worked for me.

Upvotes: 1

Phil
Phil

Reputation: 36289

In the layout XML, add the following attribute to your EditText:

android:inputType="text|textNoSuggestions"

If neither this, nor the above approaches work, then this is almost certainly a problem with the emulator and the other device, and you should contact the manufacturers directly.

See also: android:inputType (note that EditText is a subclass of TextView, which is why this attribute also works for EditTexts).

Upvotes: 25

kaolick
kaolick

Reputation: 4857

You could simply use the EditText's setThreshold() method. Set the threshold to let's say 100 when you don't want to show predictions. If you want to re-activate showing predictions, set it back to a small int like 1 or 2 depending on your needs.

Upvotes: 1

theb1uro
theb1uro

Reputation: 546

I've tried all the above and none of above really helped me. I've search through available InputTypes and I've came up with a solution, which happened to be TYPE_TEXT_FLAG_AUTO_COMPLETE:

mEditText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);

From its description:

This generally means that the input method should not be showing candidates itself, but can expect for the editor to supply its own completions/candidates from InputMethodSession.displayCompletions().

I haven't specified any completions set and as a result I'm not getting any auto-suggestions.

PS. Flag InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD mentioned in commend above does this trick as well, but it also disables toggling the language in the keyboard.

Upvotes: 20

Ravi_Parmar
Ravi_Parmar

Reputation: 12329

'oninput' event in the input, ran the following function:

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

I run the auto complete manually, and it works

Thank you all for the help

Upvotes: -2

Davide
Davide

Reputation: 3472

You can use the class AutoCompleteTextView and set the adapter that contains nothing AutoCompleteTextView Class Reference

example

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

Upvotes: 2

Animesh
Animesh

Reputation: 1234

The answer acceted as correct is faulty. To disable auto suggest add following property to your EditText XML

android:inputType="textFilter"

Upvotes: -3

Klox
Klox

Reputation: 966

I was fighting with the same problem in the emulator. While testing, I realized that what was appearing wasn't the normal autocomplete, but a special Asian character preview (presumably because it requires multiple keys to generate one Asian character). So I solved this by setting the language to English. I think what I was seeing was the "Key Preview" option listed under the "Japanese IME" setting in "Language & keyboard".

I'm guessing that it would be pretty hard to disable this within an individual App without delving into the keyboard handling and language support.

Upvotes: 1

Related Questions