Автозаполнение Android начинается только после двух букв. Как я могу сделать так, чтобы список появлялся, когда поле только что выбрано?
Немедленно показать автозаполнение на Android
Ответы (6)
Чтобы автозаполнение отображалось в фокусе, добавьте прослушиватель фокуса и покажите раскрывающийся список, когда поле получает фокус, например:
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if(hasFocus){
editText.showDropDown();
}
}
});
Или просто вызовите editText.showDropDown(), если вам не нужна часть фокуса.
Взгляните на метод setThreshold:
public void setThreshold (int threshold)
Начиная с: API уровня 1
Указывает минимальное количество символов, которое пользователь должен ввести в поле редактирования перед перетаскиванием. отображается нижний список.
Если пороговое значение меньше или равно 0, применяется пороговое значение 1.
Расширьте AutoCompleteTextView, переопределив методы достаточного фильтра () и пороговые методы, чтобы он не заменял порог 0 на порог 1:
public class MyAutoCompleteTextView extends AutoCompleteTextView {
private int myThreshold;
public MyAutoCompleteTextView(Context context) {
super(context);
}
public MyAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyAutoCompleteTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setThreshold(int threshold) {
if (threshold < 0) {
threshold = 0;
}
myThreshold = threshold;
}
@Override
public boolean enoughToFilter() {
return getText().length() >= myThreshold;
}
@Override
public int getThreshold() {
return myThreshold;
}
}
Для людей, которые хотят изменить порог с помощью SearchView, вы должны использовать:
SearchView.SearchAutoComplete complete = (SearchView.SearchAutoComplete)search.findViewById(R.id.search_src_text);
complete.setThreshold(0);
Дополните адаптер одним/двумя белыми символами слева в зависимости от настройки порога.
Альтернативный метод изменения настройки в вашем XML: как упоминалось другими, вам необходимо установить свой 'Порог автоматического завершения" на 1
Кроме того, что упоминал @systempuntoout.
Вы также можете сделать это в своем XML-файле, как показано ниже.
<AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edittext_id"
android:inputType="textAutoComplete"
android:completionThreshold="1"
/>
Обратите внимание на строку: android:completionThreshold="1"