2010-11-20 11 views

Respuesta

9

Extender el AutoCompleteTextView, anulando el enoughToFilter() los métodos y los métodos de umbral para que no pretende sustituir el umbral 0 con un umbral de 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; 
    } 

} 
+1

Esto no mostrará el menú desplegable a la vez, igual tendrá que comenzar a escribir. – Heinrisch

1

Almohadilla su adaptador con uno o dos caracteres blancos a la izquierda dependiendo de la configuración del umbral.

9

Tenga una mirada a setThreshold método:

public void setThreshold (int umbral)
desde: Nivel API 1
Especifica el número mínimo de caracteres que el usuario tiene que escribir en el cuadro de edición antes de mostrar la lista desplegable .
Cuando el umbral es menor o igual a 0, se aplica un umbral de 1.

+1

¿Hay alguna forma de hacerlo? 0? – Mitchell

+0

Cuando el umbral es menor o igual a 0, se aplica un umbral de 1. – systempuntoout

+1

¿De modo que no hay forma de hacerlo de modo que solo la selección revele todas las opciones? – Mitchell

21

Para obtener la función de autocompletar para mostrar el enfoque añadir oyente enfoque y mostrar el menú desplegable cuando el campo se centrará, como esto:

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

O simplemente llamar editText.showDropDown() si usted no necesita la parte de enfoque.

+1

Este funcionó mejor para mí. Quería que apareciera cuando el usuario hace clic en él, así que en lugar de Focus usé onClick. –

+0

simple conciso y ... ¡el mejor! –

0

método alternativo para cambiar la configuración de su XML: Como han mencionado otros que necesita para establecer su 'Auto Completion Threshold' a 1

Aparte de lo mencionado @systempuntoout.

También puede hacerlo en el archivo XML, como se muestra

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

Nota de la línea: androide: completionThreshold = "1"

1

Para las personas que quieren cambiar el umbral usando SearchView que tiene para usar:

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