web-dev-qa-db-fra.com

Android désactive par programmation l'auto-complétion/autosuggest pour EditText dans l'émulateur

Cibler Android 2.2

J'ai lu les réponses aux questions suivantes:

Désactiver l'autosuggest pour EditText?

Android: multiligne et pas de suggestion automatique dans EditText

J'ai essayé les variations suivantes sur les suggestions:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER);

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_VARIATION_FILTER);

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

Tout cela fonctionne sur la plupart des appareils que j'ai testés (Droid X, Droid 2, Thunderbolt, Incredible) mais ne fonctionne pas sur l'émulateur et au moins 1 appareil (Samsung GT i5500).

Y at-il un autre moyen de par programmation désactiver l'auto-complétion/autosuggest pour un EditText d'une manière que l'émulateur et certains périphériques reconnaissent et respectent?

43
gyoda

Pour les périphériques Vodafone 845 (2.1), huawei 8800 (2.2), textVisiblePassword semble empêcher la prédiction de Word.

    vendorId.setInputType(Android.text.InputType.TYPE_CLASS_TEXT | Android.text.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

ou 

Android: inputType = "textVisiblePassword"

44
bob

Dans le XML de présentation, ajoutez l'attribut suivant à votre EditText:

Android:inputType="text|textNoSuggestions"

Si ni cela, ni les approches ci-dessus ne fonctionnent, alors c'est certainement un problème avec l'émulateur et l'autre périphérique, et vous devez contacter directement le fabricant.

Voir aussi: Android: inputType (notez que EditText est une sous-classe de TextView, raison pour laquelle cet attribut fonctionne également pour EditTexts).

23
Phil

personnellement, ce code m'aide à:

autoCompleteTextView.setAdapter(null);
autoCompleteTextView.setText(address);
autoCompleteTextView.setAdapter(adapter);

Je souhaite désactiver les suggestions lorsque je définis du texte afin de supprimer l'adaptateur. Après l'appel de setText, je le renvoie.

donc si vous voulez désactiver la suggestion, utilisez simplement:

autoCompleteTextView.setAdapter(null);
5
itzhar

Utiliser Android:inputType="textNoSuggestions|textVisiblePassword" pour Edittext résout le problème.

2
Mridul Shrivastava

Vous pouvez utiliser la classe AutoCompleteTextView et définir l'adaptateur qui ne contient rien Référence de la classe AutoCompleteTextView

exemple

 public class CountriesActivity extends Activity {
   protected void onCreate(Bundle icicle) {
     super.onCreate(icicle);
     setContentView(R.layout.countries);

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
             Android.R.layout.simple_dropdown_item_1line, COUNTRIES);
     AutoCompleteTextView textView = (AutoCompleteTextView)
             findViewById(R.id.countries_list);
     textView.setAdapter(adapter);
   }

   private static final String[] COUNTRIES = new String[] {""};
 }
2
Davide

Je me battais avec le même problème dans l'émulateur. Lors des tests, je me suis rendu compte que ce qui apparaissait n'était pas la saisie semi-automatique normale, mais un aperçu spécial des caractères asiatiques (probablement parce qu'il nécessite plusieurs clés pour générer un caractère asiatique). J'ai donc résolu le problème en réglant la langue sur anglais. Je pense que ce que je voyais, c’était l’option «Aperçu de la clé» indiquée sous le paramètre «IME japonais» dans «Langue et clavier».

J'imagine qu'il serait assez difficile de désactiver cela au sein d'une application individuelle sans se plonger dans la gestion du clavier et la prise en charge de la langue.

1
Klox

Vous pouvez également utiliser ce qui suit pour désactiver la suggestion automatique sur n’importe quel edittext.

<EditText>
Android:inputType="textNoSuggestions|textVisiblePassword"
</EditText>

Cela a fonctionné pour moi.

1
Mridul Shrivastava

Vous pouvez simplement utiliser la méthode setThreshold() de EditText. Définissez le seuil sur 100, par exemple, lorsque vous ne souhaitez pas afficher les prévisions. Si vous souhaitez réactiver l'affichage des prévisions, réglez-le sur un petit int tel que 1 ou 2 en fonction de vos besoins.

0
kaolick