2010-11-20 16 views

Antwort

9

Erweitere AutoCompleteTextView, das Überschreiben der enoughToFilter() -Methoden und die Schwellen Methoden so, dass es nicht die 0 Schwelle mit einem 1 Schwelle ersetzt:

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; 
    } 

} 
+1

Dies zeigt das Drop-down nicht sofort an, Sie müssen trotzdem mit der Eingabe beginnen. – Heinrisch

1

Setzen Sie Ihren Adapter je nach Schwellenwerteinstellung mit einem/zwei weißen Zeichen links auf.

9

Werfen Sie einen Blick auf setThreshold Methode:

public void SetThreshold ( Schwelle int)
seit: API Stufe 1
die Mindestanzahl von Zeichen Gibt der Benutzer zu schreiben hat Im Bearbeitungsfeld vor der Dropdown-Liste wird angezeigt.
Wenn der Schwellenwert kleiner oder gleich 0 ist, wird ein Schwellenwert von 1 angewendet.

+1

Gibt es eh zu 0 zu machen? – Mitchell

+0

Wenn der Schwellenwert kleiner oder gleich 0 ist, wird ein Schwellenwert von 1 angewendet. – systempuntoout

+1

Also gibt es keine Möglichkeit, es so zu machen, dass nur Auswahl alle Optionen aufzeigt? – Mitchell

21

Um die zur automatischen Vervollständigung erhalten auf Fokus zu zeigen, Fokus Zuhörer hinzufügen und die Drop-down zeigen, wenn das Feld den Fokus erhält, wie folgt aus:

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

Oder rufen Sie einfach editText.showDropDown(), wenn Sie den Fokus Teil nicht brauchen.

+1

Dieser arbeitete am besten für mich. Ich wollte, dass es angezeigt wird, wenn der Nutzer darauf klickt, also anstelle von Fokus habe ich onClick verwendet. –

+0

einfach übersichtlich und ... das Beste! –

0

Alternative Verfahren zur Bestimmung der Einstellung in der XML-Wechsel: Wie bereits von anderen erwähnt Sie Ihre ‚Auto Completion Threshold‘ einstellen müssen 1

Andere als das, was @systempuntoout erwähnt.

Sie können auch tun, dass in der XML-Datei als

gezeigt
<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" 
/> 

Beachten Sie die Zeile: android: completionThreshold = "1"

1

Für Menschen, die Schwelle ändern möchten, mit Suche Sie haben zu verwenden:

SearchView.SearchAutoComplete complete = (SearchView.SearchAutoComplete)search.findViewById(R.id.search_src_text); 
complete.setThreshold(0);