Autouzupełnianie Androida rozpoczyna się po dwóch literach. Jak mogę to zrobić, aby lista pojawiała się po wybraniu pola?Natychmiastowe wyświetlenie autouzupełniania na Androidzie
Odpowiedz
Rozszerz AutoCompleteTextView, przesłanianie enoughToFilter() metody i sposoby progowe tak, że nie zastępuje próg 0 z 1 progiem:
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;
}
}
Połóż adapter z jednym/dwoma białymi znakami po lewej stronie w zależności od ustawienia progu.
Mają wygląd setThreshold metody:
public void setThreshold (int próg)
Od: poziom API 1
Określa minimalną liczbę znaków użytkownik musi wpisać w polu edycji przed wyświetleniem listy rozwijanej .
Gdy próg jest mniejszy lub równy 0, stosowany jest próg 1.
Czy jest mimo to do zrobienia 0? – Mitchell
Gdy próg jest mniejszy lub równy 0, stosowany jest próg 1. – systempuntoout
Więc nie ma sposobu, aby tak się stało, że po prostu wybór ujawnia wszystkie opcje? – Mitchell
Aby uzyskać autouzupełniania, aby pokazać na fokus dodać ostrości słuchacza i pokazać spadek w dół, gdy pole dostaje skupić, tak:
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if(hasFocus){
editText.showDropDown();
}
}
});
Albo po prostu zadzwoń editText.showDropDown(), jeśli nie potrzebujemy część ostrości.
Ten działał najlepiej dla mnie. Chciałem, żeby się pojawił, gdy użytkownik kliknie, więc zamiast Fokusa użyłem go. –
proste zwięzłe i ... najlepsze! –
Alternatywna metoda zmieniając ustawienia w swojej XML: Jak wspomniano przez innych trzeba ustawić swoją „Auto Completion Threshold” do 1
Inne niż to, co @systempuntoout wymienione.
Można również zrobić to w pliku XML, jak pokazano
<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"
/>
Uwaga linia: android: completionThreshold = "1"
Dla ludzi, którzy chcą zmienić próg użyciu SearchView masz do użycia:
SearchView.SearchAutoComplete complete = (SearchView.SearchAutoComplete)search.findViewById(R.id.search_src_text);
complete.setThreshold(0);
Nie spowoduje to natychmiastowego rozwinięcia listy rozwijanej, ale musisz zacząć pisać. – Heinrisch