EditTextの自動提案をオフにしますか?


123

EditTextに入力するとポップアップする自動提案リストをプログラムでオフにする方法はありますか?

回答:


122

同じ質問がありましたが、XMLファイルでこのオプションを設定したかったので、自分で見つけられるまでもう少し調査しました。

この行をEditTextに追加します。

android:inputType="textFilter" 

ここにヒントがあります。「Enter」キーを使用できるようにする場合は、この行を使用します。

android:inputType="textFilter|textMultiLine"

投票してください!EditTextをtextViewのように見せたい場合、これは実際にうまく機能します。
sir_k 2015

1
一部のAndroid 4.4スマートフォンでも機能しません
voghDev

API 24 / Android 7.0:android:inputType="textPersonName"提案されたテキストに置き換えましたが、まだ提案行が表示されます(マイクアイコン付き)。
ネフ

120
android:inputType="textNoSuggestions"  

また、あなたがより良い読みたい本を


5
「textNoSuggestions」はAPI 5以上でのみ機能することに注意してください。
glr '17

89
@gyller APIが5未満のデバイスを見たことがありますか?
クレーカー

15
ユーザーの0.23%が1.6(APIレベル4)を使用しています。:)
ジェレミー・ローガン

1
ただし、Enterキーは失われます。ENTERを使用できるようにしたい場合android:inputType = "textNoSuggestions | textMultiLine"
barlop

3
提案は無効になりますが、提案行は表示されます(マイクオプションが含まれています)。
VipulKumar

61
android:inputType="textVisiblePassword" 

魅力のように働く


3
私はこのルートに行きません。これはハックであり、パスワード用であると伝えるときにキーボードの他の機能が変更される可能性があることについては言及していません。「text | textNoSuggestions」を使用してください。
マイケルピーターソン

2
@ P1X3L5 textNoSuggestionsは、多くのデバイスで機能しません。残念ながら、このハックはGoogleが修正するまで必要です
Tariq

1
私にとっては、それはより良かったです。それは、キーボード(ネクサス5)の上のストリップも削除します。これは、すべてのデバイスに当てはまる必要はありませんが、一部のユーザーにとってはより良いパフォーマンスを提供します(音声入力機能もオフにします)
ArkadiuszCieśliński

1
これ.は、単語の後に2つのスペースが入力された場合、単語の最後に追加されたピリオド文字を削除するために機能しました。アクションバーのsearchViewに使用しました ((SearchView) MenuItemCompat.getActionView(searchItem)) .setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
Gene Bo

これは私のために働いた唯一の解決策です。フォームを移動してフィールドに戻ると、他の回答が機能しません。グーグルはそのようなドープの束です。不完全で十分にテストされていないそのような単純な機能をリリースします。
angryITguy 2018

41

それを行う方法:

  1. プログラム的に
editText.inputType = InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS
  1. XML
android:inputType="textNoSuggestions"

すでにいくつかのフラグが設定されている場合は、次のようにします。

  1. プログラム的に
inputType = if (disableSuggestions) {
  InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS or inputType
} else {
  inputType and InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS.inv()
}
  1. XML
android:inputType="textNoSuggestions|textPassword"

22

オートコンプリートを取り除くために私が見つけた最も信頼できるアプローチは、

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD 

EditTextコントロール上。チャーリーがこのページの別の答えで報告したように、

android:inputType="textVisiblePassword"

このフラグのXMLバージョンです。

このフラグと組み合わせることができます

InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS

私はほとんどの携帯電話で機能するInputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORDなしでInputType.TYPE_TEXT_FLAG_NO_SUGGESTIONSを使用していましたが、それでもまだオートコンプリートを取得しているSamsungの携帯電話に出くわしました。

AndroidはエミュレーターでEditTextのautocomplete / autosuggestをプログラムで無効にします

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORDの使用が提案されました。

私はこれを(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONSと共に)試してみましたが、うまくいきました。あなたはオートコンプリートはなりたくないというヒントを取るない理由も、携帯電話を見ることができる持っている、それはパスワードフィールドで無効にできるようにすること。私たちの息を止めるのではなく、これはそのような電話から私たちが望むものを得る最良の方法かもしれません。

一部のデバイスでは、このフラグによってフォントがわずかに変更されました。最も顕著なのは、ゼロ(0)とOh(O)をより明確に区別するためです。これは、パスワードの表示に明らかに重要です。しかし、少なくともそれは機能し、新しいフォントは見栄えがよくなりました。

私がこの提案を見つけた記事は古いものでしたが、私がテストした電話はごく最近のものでした-SprintのSamsung Galaxy Note II(SPH-L900)ストックAndroid 4.1.2。選択されたキーボードは「Samsungキーボード」で、顧客がSprintから受け取ったとき、これは明らかにこの電話のデフォルトでした。したがって、この問題は、Samsungの重要な携帯電話の少なくとも一部で、長年にわたって続いているようです。

私のように、Samsungテストデバイスをお持ちでない方にとって、これは重要な情報になる可能性があります。


3
現在のファームウェアを搭載したSamsung S3では動作しません。おっとっと。
表示名

@SargeBorsch:TYPE_TEXT_VARIATION_VISIBLE_PASSWORDとTYPE_TEXT_FLAG_NO_SUGGESTIONSを併用しても、S3でオートコンプリートが実行されるということですか?私はそうです、あなたは標準のキーボードを使っていますか?私はS3を持っていませんが、過去にS3でアプリ(上記のアプローチを使用)を試しましたが、オートコンプリートはありませんでした。Android 4.4(Cyanogenmod)を実行しているS4を使用していますが、オートコンプリートも行われません。
カール、

@SargeBorsch:S3で上記のアプローチを使用するアプリを試してみたい場合は、これが私のものです: play.google.com/store/apps/… その下部にある[Wordのチェック]フィールドかどうかを確認してくださいアプリ(上記のフラグを使用)は、デバイスでオートコンプリートを試みます。TIA。
カール

よろしくお願いします
表示名

>「TYPE_TEXT_VARIATION_VISIBLE_PASSWORDとTYPE_TEXT_FLAG_NO_SUGGESTIONSを併用しても、S3でオートコンプリートが実行されると言っていませんか?」はい、正確に。それは...電子メールの入力なので、また、Eメールのタイプがありますが
表示名

20

アンドロイドバージョン8.0以降では、このコードは機能せず、オートコンプリートテキストビューでもこのコードは機能しないので、8.0以降で自動提案を無効にするために以下のコードを使用することをお勧めしますandroid vesrion 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" />

このようなオートコンプリートテキストビューの場合、このフィールドを使用して自動提案を無効にします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" />

2
驚くばかり!これは私のために働いた唯一のものでした。
Laurel Thomson

私のために働く唯一のもの、thx @MaheshKeshvalaは私の日を救うために賛成です。
Ravi Vaniya

オートフィルはキーボードのオートコンプリートではなく、異なる機能です。オートフィルはOSによって処理されますが、オートコンプリートはキーボードの開発者によって処理されます(うまくいけば)。
milosmns

10

これを使用してこの問題を解決できます:

android:importantForAutofill="no" 

Android Oには、フィールドの自動入力をサポートする機能があります。これは、XMLでのみ使用してください。自動入力のヒントは無効になります


7

これはまだ問題なので、この回答を投稿します。android:inputType = "textVisiblePassword"は機能しますが、それは望ましくありません。1つ目は入力の不実表示であり、2つ目はジェスチャー入力を無効にするためです。

代わりに、textNoSuggestionsとtextFilterの両方のフラグを使用する必要がありました。どちらかだけではうまくいきませんでした。

android:inputType="textCapSentences|textFilter|textNoSuggestions"

textCapSentencesは他の理由によるものでした。しかし、このinputTypeはスワイプ入力を維持し、提案ツールバーを無効にしました。


7

4.4.4を実行しているサムスンの携帯電話でこれを取得していました。これは私の問題を解決しました

android:inputType="text|textVisiblePassword|textNoSuggestions"

8.1を実行しているSamsungでも同じです。私にとってうまくいったのはandroid:inputType = "textVisiblePassword | textNoSuggestions"だけでした
Eino Gourdin

4

OK、問題は-Eclipseでは、textNoSuggestionという名前のフラグの提案が表示されないことでした。

また、inputTypeの属性が認識されないため、UIを設計するmain.xmlで設定することはできません。したがって、int constを使用してコードで設定できます。

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

そして、この問題の答えを見つけてくれたjasta00に感謝します。


6
これは仕事をします... .setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
w.donahue

2
同意し、値ではなく定数を使用してください
David Snabel-Caunt

1
@ kape123ビルドターゲットが5 APIより低いため、xmlにandroid:inputType = "textNoSuggestions"を設定できません
kreker

一部のSamsung電話では、標準キーボードオートコンプリートがInputType.TYPE_TEXT_FLAG_NO_SUGGESTIONSによってオフにされないことに注意してください。一人は、このかなり古い記事でInputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORDを使用することを提案: stackoverflow.com/questions/6281514/...
カール


1
EditText emailTxt=(EditText)findViewById(R.id.email);
emailTxt.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

これはあなたを助けます。


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

EditTextのsetThreshold()メソッドを使用するだけです。予測を表示したくない場合は、しきい値を100としましょう。表示中の予測を再度アクティブにする場合は、必要に応じて、1または2などの小さなintに戻します。


EditTextにはsetThreshold()がありません。説明していただけますか?
behelit
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.