Android программно отключает автозаполнение / автозаполнение для EditText в эмуляторе

Ориентация на 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 таким образом, чтобы эмулятор и некоторые устройства распознавали и уважали?

13 ответов

Решение

Для устройств 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);

или же

андроид:inputType="textVisiblePassword"

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

android:inputType="text|textNoSuggestions"

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

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

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

mEditText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);

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

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

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

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

Лично мне этот код поможет:

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

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

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

autoCompleteTextView.setAdapter(null);

С помощью android:inputType="textNoSuggestions|textVisiblePassword" для редактирования текста исправить проблему.

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

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

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

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

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

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

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

Чтобы программно отключить автоматические исправления/предложения в EditText:

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

Примечание: вышеупомянутое работает для SearchView и др.

Попробуйте этот android:importantForAutofill="no"

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

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

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

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

Ответ, принятый как правильный, ошибочен. Чтобы отключить автоматическое предложение, добавьте следующее свойство в свой XML-файл EditText.

android:inputType="textFilter"
Другие вопросы по тегам