Есть ли способ программно отключить этот список автозаполнения, который появляется при вводе текста в EditText?
Отключить автозаполнение для EditText?
Ответы (14)
У меня был тот же вопрос, но я все еще хотел установить эту опцию в своем XML-файле, поэтому я провел немного больше исследований, пока не обнаружил это сам.
Добавьте эту строку в свой EditText.
android:inputType="textFilter"
Вот совет. Используйте эту строку, если вы хотите иметь возможность использовать клавишу «ввод».
android:inputType="textFilter|textMultiLine"
android:inputType="textPersonName"
предлагаемым текстом, но он по-прежнему отображает строку предложения (со значком микрофона).
- person Neph; 25.02.2020
android:inputType="textNoSuggestions"
также вам лучше прочитать это
android:inputType="textVisiblePassword"
работает как шарм
.
, добавленный в конце слова, если после этого слова вводятся два пробела. Я использовал его для панели действий searchView ((SearchView) MenuItemCompat.getActionView(searchItem)) .setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
- person Gene Bo; 27.06.2016
Способы сделать это:
- Программно
editText.inputType = InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS
- XML
android:inputType="textNoSuggestions"
Если у вас уже установлены некоторые флаги, то:
- Программно
inputType = if (disableSuggestions) {
InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS or inputType
} else {
inputType and InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS.inv()
}
- XML
android:inputType="textNoSuggestions|textPassword"
Самый надежный способ избавиться от автозаполнения, который я нашел, — это использовать
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
на вашем элементе управления EditText. Как сообщил Чарли в другом ответе на этой странице,
android:inputType="textVisiblePassword"
является XML-версией этого флага.
Вы можете комбинировать этот флаг с
InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS
Я использовал InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS без InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD, который работал на большинстве телефонов, но затем я наткнулся на телефон Samsung, для которого я все еще получал автозаполнение.
Android программно отключает автозаполнение/автоподсказку для EditText в эмуляторе
который предложил использовать InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD.
Я попробовал это (вместе с InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS), и это сработало. Вы можете понять, почему даже телефон, который может не принять подсказку о том, что вы не хотите использовать автозаполнение, должен разрешить его отключение для поля пароля. За исключением задержки дыхания, это может быть лучший способ получить то, что мы хотим от таких телефонов.
На некоторых моих устройствах шрифт был немного изменен этим флажком — особенно заметно, чтобы более четко отличать ноль (0) от О (О), что, очевидно, было бы важно для отображения пароля. Но, по крайней мере, это сработало, и новый шрифт не был непривлекательным.
Несмотря на то, что сообщение, в котором я нашел это предложение, было старым, телефон, на котором я тестировался, был совсем новым — Samsung Galaxy Note II (SPH-L900) со стандартным Android 4.1.2 от Sprint. Выбранной клавиатурой была «Клавиатура Samsung», и, по-видимому, она использовалась по умолчанию для этого телефона, когда покупатель получил ее от Sprint. Таким образом, эта проблема, по-видимому, сохраняется на протяжении многих лет, по крайней мере, для некоторых важных телефонов Samsung.
Для тех из вас, у кого, как и у меня, нет тестового устройства Samsung, это может быть важной информацией.
Для версии Android 8.0 или выше этот код не работает, а для текстового представления автозаполнения также этот код не работает, поэтому я предлагаю вам использовать приведенный ниже код для Отключить автоматические предложения в версии Android 8.0 или выше. используйте это свойство edittext android:importantForAutofill="no"
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:enabled="false"
android:focusable="false"
android:imeOptions="actionDone"
android:maxLength="80"
android:maxLines="1"
android:textColor="@color/colorBlack"
android:textColorHint="@color/colorBlack"
android:importantForAutofill="no"
android:textSize="@dimen/_12sdp"
app:bFontsEdt="light" />
и для текстового представления автозаполнения, подобного этому, используйте это поле для отключения автоматического предложения android:importantForAutofill="no" :
<AutoCompleteTextView
android:id="@+id/autocompleteEditTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/_3sdp"
android:layout_marginTop="@dimen/_5sdp"
android:background="@null"
android:imeOptions="actionDone"
android:singleLine="true"
android:text=""
android:textColor="@color/colorBlack"
android:textColorHint="@color/colorGrayDark"
android:importantForAutofill="no"
android:textSize="@dimen/_12sdp" />
Вы можете решить эту проблему, используя это:
android:importantForAutofill="no"
Android O имеет функцию поддержки автоматического заполнения полей, просто используйте это только в своем xml, это отключит подсказки автозаполнения.
Поскольку это все еще проблема, я опубликую этот ответ. android:inputType="textVisiblePassword" работает, но нежелательно, во-первых, потому что это искажение ввода, а во-вторых, потому что он отключает набор жестов!
Вместо этого мне пришлось использовать ОБА флага textNoSuggestions и textFilter. Либо один не работал.
android:inputType="textCapSentences|textFilter|textNoSuggestions"
TextCapSentences был по другим причинам. Но этот inputType сохранил ввод текста и отключил панель инструментов предложения.
Я получал эту штуку на телефонах Samsung под управлением 4.4.4. Это решило мою проблему
android:inputType="text|textVisiblePassword|textNoSuggestions"
Хорошо, проблема была в том, что в Eclipse вы не получаете предложение для флага с именем: textNoSuggestion
И вы не можете установить его в main.xml (где вы разрабатываете пользовательский интерфейс), потому что этот атрибут для inputType не распознан. Таким образом, вы можете установить его в коде, используя int const:
EditText txtTypeIt = (EditText) this.findViewById(R.id.txtTypeIt);
txtTypeIt.setInputType(524288);
И спасибо jasta00 за помощь в поиске ответа на этот вопрос.
Это сработало для меня
android:importantForAutofill="no"
android:inputType="none|textNoSuggestions"
EditText emailTxt=(EditText)findViewById(R.id.email);
emailTxt.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
Это поможет вам.
Вы можете просто использовать метод setThreshold()
EditText. Установите порог, скажем, 100, если вы не хотите показывать прогнозы. Если вы хотите повторно активировать отображение прогнозов, установите его обратно на небольшое целое число, например 1 или 2, в зависимости от ваших потребностей.