La saisie semi-automatique Android démarre uniquement après deux lettres. Comment puis-je faire en sorte que la liste apparaisse lorsque le champ est sélectionné?Afficher immédiatement la saisie semi-automatique sur Android
Répondre
Prolonger la AutoCompleteTextView, remplaçant les méthodes et les méthodes de seuil enoughToFilter() afin qu'il ne remplace pas le 0 seuil avec un 1 seuil:
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;
}
}
Pad adaptateur avec un/deux caractères blancs sur la gauche en fonction du réglage de seuil.
allez voir setThreshold méthode:
public void setThreshold (int seuil)
depuis: API Niveau 1
Indique le nombre minimum de caractères que l'utilisateur doit saisir dans la zone d'édition avant que la liste déroulante soit affichée .
Lorsque le seuil est inférieur ou égal à 0, un seuil de 1 est appliqué.
Y a-t-il un moyen d'y arriver? – Mitchell
Lorsque le seuil est inférieur ou égal à 0, un seuil de 1 est appliqué. – systempuntoout
Donc, il n'y a aucun moyen de faire en sorte que le simple choix révèle toutes les options? – Mitchell
Pour obtenir la saisie semi-automatique pour montrer sur le focus Ajout d'un écouteur de mise au point et montrer le menu déroulant lorsque le champ se concentrer, comme ceci:
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if(hasFocus){
editText.showDropDown();
}
}
});
Ou appelez editText.showDropDown() si vous n'avez pas besoin de la part de mise au point.
Celui-ci fonctionnait le mieux pour moi. Je voulais qu'il apparaisse lorsque l'utilisateur clique dessus, donc au lieu de Focus j'ai utilisé onClick. –
simple concis et ... le meilleur! –
Méthode alternative de modifier le paramètre dans votre XML: Comme mentionné par d'autres, vous devez définir votre « Auto Completion Threshold » à 1
autre que ce @systempuntoout mentionné.
Vous pouvez aussi le faire dans votre fichier XML comme indiqué
<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"
/>
Notez la ligne: android: completionThreshold = "1"
Pour les personnes qui veulent changer le seuil en utilisant SearchView vous avez à utiliser:
SearchView.SearchAutoComplete complete = (SearchView.SearchAutoComplete)search.findViewById(R.id.search_src_text);
complete.setThreshold(0);
Cela ne montrera pas la liste déroulante à la fois, vous devrez toujours commencer à taper. – Heinrisch