Android программно отключает автозаполнение / автозаполнение для EditText в эмуляторе - PullRequest
43 голосов
/ 08 июня 2011

Ориентация на Android 2.2

Я прочитал ответы на следующие вопросы:

Отключить автозаполнение для EditText?

Android: Многострочный & Нет автоподстановки в 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 таким образом, что эмулятор и некоторые устройства будут распознавать и уважать?

Ответы [ 11 ]

46 голосов
/ 06 сентября 2011

Для устройств Vodafone 845 (2.1), huawei 8800 (2.2) textVisiblePassword, по-видимому, препятствует предсказанию слов.

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

или

для Android: inputType = "textVisiblePassword"

23 голосов
/ 16 августа 2011

В макете XML добавьте следующий атрибут к вашему EditText:

android:inputType="text|textNoSuggestions"

Если ни этот, ни вышеперечисленные подходы не работают, то это почти наверняка проблема с эмулятором и другим устройством, и вам следует напрямую связаться с производителями.

См. Также: android: inputType (обратите внимание, что EditText является подклассом TextView, поэтому этот атрибут также работает для EditTexts).

15 голосов
/ 15 января 2013

Я пробовал все вышеперечисленное, и ничто из вышеперечисленного не помогло мне.Я поискал в доступных InputTypes , и я нашел решение, которое оказалось TYPE_TEXT_FLAG_AUTO_COMPLETE :

mEditText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);

Из его описания:

Это обычно означает, что метод ввода не должен сам показывать кандидатов, но может ожидать, что редактор предоставит свои собственные дополнения / кандидаты из InputMethodSession.displayCompletions ().

Я не указал ни одного набора завершений , и в результате я не получил никаких авто-предложений .

PS.Флаг InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD, упомянутый в вышеупомянутом commend, также выполняет этот трюк, но он также отключает переключение языка на клавиатуре.

6 голосов
/ 23 октября 2014

лично, этот код помогает мне:

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

Я хочу отключить предложения, когда я устанавливаю текст, поэтому я удаляю адаптер и после того, как я вызываю setText, я возвращаю его.

так что, если вы хотите отключить предложение, просто используйте:

autoCompleteTextView.setAdapter(null);
2 голосов
/ 18 марта 2015

Использование android:inputType="textNoSuggestions|textVisiblePassword" для Edittext решит проблему.

2 голосов
/ 13 декабря 2012

Вы можете использовать класс 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[] {""};
 }
1 голос
/ 02 июля 2014

Вы также можете использовать следующее для отключения автоматического предложения для любого текста редактирования.

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

Это сработало для меня.

1 голос
/ 19 февраля 2013

Вы можете просто использовать метод EditText setThreshold().Установите порог, скажем, 100, если вы не хотите показывать прогнозы.Если вы хотите повторно активировать показ прогнозов, установите для него маленькое целое число, например 1 или 2, в зависимости от ваших потребностей.

1 голос
/ 21 августа 2011

Я боролся с той же проблемой в эмуляторе. Во время тестирования я понял, что то, что появлялось, было не обычным автозаполнением, а особым предварительным просмотром азиатских символов (предположительно потому, что для генерации одного азиатского символа требуется несколько ключей). Поэтому я решил это, установив язык на английский. Я думаю, что то, что я видел, было опцией «Предварительный просмотр клавиш», указанной в разделе «Японский IME» в «Язык и клавиатура».

Я предполагаю, что было бы довольно сложно отключить это в отдельном приложении, не углубляясь в обработку клавиатуры и языковую поддержку.

0 голосов
/ 07 января 2013

Событие 'oninput' на входе, запустила следующую функцию:

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

Я запускаю автозавершение вручную, и оно работает

Спасибо всем за помощь

...