50

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?

Community
  • 1
  • 1
gyoda
  • 1,053
  • 2
  • 11
  • 22
  • 1
    Please bear in mind that all of these are simply hints to the input method editor. There is no requirement for any input method editor to honor them. Hence, it is all but guaranteed that there will be some pieces of hardware, or some third-party IMEs, that fail to honor the request. Now, I would expect that the *emulator* would honor them, since it has the standard input method editor, but I have not tried suppressing suggestions, either. – CommonsWare Jun 08 '11 at 17:02
  • @gyoda were you finally able to find a solution that works on the emulator and on all devices? – hopia Mar 07 '12 at 02:06
  • @hopia Adding android:inputType="textVisiblePassword" seemed to work for all of my use cases. Also, make sure you aren't using the Japanese IME in the emulator. – gyoda Mar 12 '12 at 18:14

13 Answers13

49

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.

bob
  • 2,674
  • 1
  • 29
  • 46
  • 5
    Be careful of this, on non-English keyboards this may disable some of the features such as toggling the language. – Cookster Oct 01 '12 at 21:10
  • 1
    You're showing how to do it in code vs doing it in the XML layout file. But you're giving different amount of flags. Which is the correct flag(s) to use? – Stealth Rabbi Jul 03 '14 at 11:50
  • The above won't work for me. When I click on InputText it shows the suggestion. Then I tried android:importantForAutofill="no" It Works for me – Yash Bhardwaj Jan 26 '20 at 19:07
25

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

andr
  • 15,970
  • 10
  • 45
  • 59
Phil
  • 35,852
  • 23
  • 123
  • 164
20

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.

theb1uro
  • 536
  • 1
  • 4
  • 8
7

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);
ישו אוהב אותך
  • 28,609
  • 11
  • 78
  • 96
itzhar
  • 12,743
  • 6
  • 56
  • 63
2

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[] {""};
 }
VMAtm
  • 27,943
  • 17
  • 79
  • 125
Davide
  • 3,407
  • 1
  • 20
  • 22
2

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

Rahul Vishwakarma
  • 996
  • 5
  • 17
  • 35
1

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.

kaolick
  • 4,817
  • 5
  • 42
  • 53
1

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

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

This worked for me.

1

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.

Klox
  • 931
  • 12
  • 21
0

Try This android:importantForAutofill="no"

Yash Bhardwaj
  • 57
  • 2
  • 6
0

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.

Isaac Riley
  • 290
  • 4
  • 5
-2

'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

Ravi_Parmar
  • 12,319
  • 3
  • 25
  • 36
-3

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

android:inputType="textFilter"
Animesh
  • 1,234
  • 2
  • 9
  • 8