web-dev-qa-db-de.com

Autosuggest für EditText deaktivieren?

Gibt es eine Möglichkeit, diese Autosuggest-Liste programmgesteuert zu deaktivieren, die bei der Eingabe in EditText angezeigt wird?

102
kape123

Ich hatte die gleiche Frage, aber ich wollte diese Option immer noch in meiner XML-Datei festlegen, also habe ich ein wenig weiter recherchiert, bis ich es selbst herausgefunden habe.

Fügen Sie diese Zeile Ihrem EditText hinzu.

Android:inputType="textFilter" 

Hier ist ein Tipp. Verwenden Sie diese Zeile, wenn Sie die Eingabetaste verwenden möchten.

Android:inputType="textFilter|textMultiLine"
107
glr
Android:inputType="textNoSuggestions"  

auch du solltest besser lesen das

102
kreker
Android:inputType="textVisiblePassword" 

klappt wunderbar

54
Mr_Hmp
  1. Programmatisch

    edittext.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
    
  2. XML

    Android:inputType="textNoSuggestions|textVisiblePassword"
    
35
Enzokie

Der zuverlässigste Ansatz, den ich gefunden habe, um die Autovervollständigung loszuwerden, ist der Gebrauch 

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD 

in Ihrem EditText-Steuerelement. Wie Charlie in einer anderen Antwort auf dieser Seite berichtet hat, 

Android:inputType="textVisiblePassword"

ist die XML-Version dieses Flags.

Sie können dieses Flag mit kombinieren 

InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS

Ich hatte InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS ohne InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD verwendet, was für die meisten Telefone funktionierte, aber dann stieß ich auf ein Samsung-Telefon, für das ich immer noch Autocomplete erhielt.

Android deaktiviert automatisch Autocomplete/Autosuggest für EditText im Emulator

was die Verwendung von InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD empfohlen hat.

Ich habe es versucht (zusammen mit InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS) und es hat funktioniert. Sie können sehen, warum selbst ein Telefon, das möglicherweise nicht den Hinweis annimmt, dass die automatische Vervollständigung nicht gewünscht wird, have hat, damit es für ein Kennwortfeld deaktiviert werden kann. Ohne den Atem anzuhalten, könnte dies der beste Weg sein, um von solchen Handys zu bekommen, was wir wollen.

Auf einigen meiner Geräte wurde die Schriftart durch dieses Flag geringfügig geändert - am deutlichsten, um eine Null (0) von einem Oh (O) klarer zu unterscheiden, was offensichtlich für die Anzeige eines Passworts wichtig wäre. Aber zumindest hat es funktioniert, und die neue Schrift war nicht unattraktiv.

Obwohl der Beitrag, auf den ich diesen Vorschlag gefunden hatte, alt war, war das Handy, das ich getestet habe, sehr aktuell - ein Samsung Galaxy Note II (SPH-L900) -Lager Android 4.1.2 von Sprint. Die gewählte Tastatur war "Samsung Keyboard" und anscheinend war dies die Standardeinstellung für dieses Telefon, als der Kunde es von Sprint erhielt. Dieses Problem hat sich also offenbar im Laufe der Jahre für einige wichtige Samsung-Telefone bewährt.

Für diejenigen von Ihnen, die wie ich kein Samsung-Testgerät haben, könnte dies eine wichtige Information sein.

15
Carl

Da dies immer noch ein Problem ist, werde ich diese Antwort posten. Android: inputType = "textVisiblePassword" funktioniert, ist jedoch unerwünscht, erstens weil es eine falsche Darstellung der Eingabe ist und zweitens, weil Gesteneingabe deaktiviert ist!

Stattdessen musste ich BEIDE Flaggen textNoSuggestions und textFilter verwenden. Entweder hat einer nicht funktioniert. 

Android:inputType="textCapSentences|textFilter|textNoSuggestions"

Die textCapSentences waren aus anderen Gründen. Dieser inputType hat jedoch die Eingabe durch Wischen beibehalten und die Vorschlags-Symbolleiste deaktiviert. 

7
Tariq

Für die Android Version 8.0 oder höher funktioniert dieser Code nicht und für die automatische Vervollständigung der Textansicht funktioniert auch dieser Code nicht. Daher empfehle ich Ihnen, den folgenden Code für zu verwenden. Deaktivieren Sie die automatischen Vorschläge in 8.0 oder höher Android vesrion benutze diese Eigenschaft von edittext Android: importantForAutofill = "no"

                   <EditText
                            Android:id="@+id/name"
                            Android:layout_width="match_parent"
                            Android:layout_height="wrap_content"
                            Android:enabled="false"
                            Android:focusable="false"
                            Android:imeOptions="actionDone"
                            Android:maxLength="80"
                            Android:maxLines="1"
                            Android:textColor="@color/colorBlack"
                            Android:textColorHint="@color/colorBlack"
                            Android:importantForAutofill="no"
                            Android:textSize="@dimen/_12sdp"
                            app:bFontsEdt="light" />

und für die AutoVervollständigen-Textansicht wie diese verwende dieses Feld, um den automatischen Vorschlag zu deaktivieren Android: importantForAutofill = "no" :

      <AutoCompleteTextView
                        Android:id="@+id/autocompleteEditTextView"
                        Android:layout_width="match_parent"
                        Android:layout_height="wrap_content"
                        Android:layout_marginLeft="@dimen/_3sdp"
                        Android:layout_marginTop="@dimen/_5sdp"
                        Android:background="@null"
                        Android:imeOptions="actionDone"
                        Android:singleLine="true"
                        Android:text=""
                        Android:textColor="@color/colorBlack"
                        Android:textColorHint="@color/colorGrayDark"
                        Android:importantForAutofill="no"
                        Android:textSize="@dimen/_12sdp" />
7
Mahesh Keshvala

Ich habe dieses Ding auf Samsung-Handys mit 4.4.4 erhalten. Das hat mein Problem gelöst 

Android:inputType="text|textVisiblePassword|textNoSuggestions"
4
Ajji

OK, das Problem war - in Eclipse erhalten Sie keinen Vorschlag für das Flag namens: textNoSuggestion

Sie können es nicht in main.xml (wo Sie die Benutzeroberfläche entwerfen) festlegen, da das Attribut für inputType nicht erkannt wird. Sie können es also mit int const in Code setzen:

EditText txtTypeIt = (EditText) this.findViewById(R.id.txtTypeIt);
txtTypeIt.setInputType(524288);

Und danke jasta00 für die Hilfe bei der Antwort auf diese Frage.

3
kape123
EditText emailTxt=(EditText)findViewById(R.id.email);
emailTxt.setInputType(Android.text.InputType.TYPE_CLASS_TEXT | Android.text.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

Das wird dir helfen.

1
Thomas V J
Android:inputType="text|textNoSuggestions"
1

Sie können einfach die setThreshold()-Methode von EditText verwenden. Stellen Sie den Schwellenwert auf 100 ein, wenn Sie keine Vorhersagen anzeigen möchten. Wenn Sie die Vorhersagen erneut aktivieren möchten, setzen Sie sie je nach Ihren Bedürfnissen auf einen kleinen Wert wie 1 oder 2.

0
kaolick
    // 100% correct & tested
    txtKey = (EditText) view.findViewById(R.id.txtKey);
    txtKey.setPrivateImeOptions("nm");
    txtKey.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        txtKey.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);
    }
0
Maxime Mbabele