Domanda Mostra immediatamente il completamento automatico su Android


Il completamento automatico di Android inizia solo dopo due lettere. Come posso fare in modo che l'elenco venga visualizzato quando il campo è appena selezionato?


11
2017-11-20 22:26


origine


risposte:


Estendi AutoCompleteTextView, sovrascrivendo i metodi enoughToFilter () e i metodi di soglia in modo che non sostituisca la soglia 0 con una soglia 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
2017-12-15 22:53



Per ottenere il completamento automatico da mostrare in focus, aggiungi il listener di focus e mostra il menu a discesa quando il campo diventa attivo, come questo:

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

O chiama semplicemente editText.showDropDown () se non hai bisogno della parte di messa a fuoco.


23
2018-02-26 12:41



Dai un'occhiata SetThreshold metodo:

vuoto pubblico SetThreshold (int   soglia)
  Dal: API Livello 1
  Specifica il numero minimo di   caratteri che l'utente deve digitare   modificare la casella prima che l'elenco a discesa sia   mostrato.
  Quando la soglia è inferiore o uguale a 0, viene applicata una soglia di 1.


9
2017-11-20 22:29



Applica il tuo adattatore con uno / due caratteri bianchi a sinistra in base all'impostazione della soglia.


1
2017-11-20 22:28



Per le persone che desiderano modificare la soglia utilizzando SearchView è necessario utilizzare:

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

1
2017-07-27 20:18



Metodo alternativo per modificare le impostazioni nel tuo XML: Come già detto da altri, devi impostare il tuoSoglia di completamento automatico'a 1

Oltre a ciò che @systempuntoout ha menzionato.

Puoi farlo anche nel tuo file XML come mostrato

<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 la linea: Android: completionThreshold = "1"


0
2018-02-10 14:28