Немедленно показать автозаполнение на Android - PullRequest
13 голосов
/ 21 ноября 2010

Автозаполнение Android начинается только после двух букв.Как сделать так, чтобы список появлялся, когда поле только что выбрано?

Ответы [ 6 ]

24 голосов
/ 26 февраля 2013

Чтобы автозаполнение отображалось в фокусе, добавьте слушателя фокуса и покажите раскрывающийся список, когда поле получает фокус, например:

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
  @Override
  public void onFocusChange(View view, boolean hasFocus) {
    if(hasFocus){
      editText.showDropDown();
    }
  }
});

Или просто вызовите editText.showDropDown (), если вам не нужна фокусная часть.

9 голосов
/ 16 декабря 2011

Расширяем AutoCompleteTextView, переопределяя методы tooToFilter () и пороговые методы, чтобы он не заменял порог 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;
    }

}
9 голосов
/ 21 ноября 2010

Обратите внимание на setThreshold метод:

public void setThreshold (int threshold)
Поскольку: APIУровень 1
Указывает минимальное количество символов, которое пользователь должен ввести в поле редактирования перед отображением раскрывающегося списка.
Когда порог меньше или равен 0, применяется порог 1.

1 голос
/ 27 июля 2015

Для людей, которые хотят изменить порог с помощью SearchView, вы должны использовать:

SearchView.SearchAutoComplete complete = (SearchView.SearchAutoComplete)search.findViewById(R.id.search_src_text);
complete.setThreshold(0);
1 голос
/ 21 ноября 2010

Дополните свой адаптер одним / двумя белыми символами слева в зависимости от настройки порога.

0 голосов
/ 10 февраля 2015

Альтернативный метод изменения настроек в вашем 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: creationThreshold = "1"

...