Nonaktifkan saran otomatis untuk EditText?


123

Apakah ada cara untuk mematikan daftar saran otomatis yang muncul saat Anda mengetik di EditText secara terprogram?

Jawaban:


122

Saya memiliki pertanyaan yang sama tetapi saya masih ingin mengatur opsi ini di file XML saya jadi saya melakukan sedikit lebih banyak penelitian sampai saya menemukannya sendiri.

Tambahkan baris ini ke EditText Anda.

android:inputType="textFilter" 

Ini Tip. Gunakan baris ini jika Anda ingin dapat menggunakan tombol "enter".

android:inputType="textFilter|textMultiLine"

PUNYA UPVOT SAYA! Sebenarnya ini bekerja dengan sangat baik ketika Anda ingin membuat EditText terlihat seperti textView.
sir_k

1
Juga tidak berfungsi di beberapa ponsel Android 4.4
voghDev

API 24 / Android 7.0: Saya mengganti android:inputType="textPersonName"dengan teks yang disarankan tetapi masih menampilkan baris saran (dengan ikon mikrofon).
Neph

120
android:inputType="textNoSuggestions"  

juga sebaiknya Anda membaca ini


5
Perhatikan bahwa "textNoSuggestions" hanya berfungsi untuk API 5 dan yang lebih baru.
glr

89
@gyller pernahkah Anda melihat perangkat dengan API kurang dari 5?
kreker

15
0,23% pengguna saya ada di 1.6 (API Level 4). :)
Jeremy Logan

1
Meskipun Anda kemudian kehilangan tombol ENTER. Jika Anda ingin dapat menggunakan ENTER android: inputType = "textNoSuggestions | textMultiLine"
barlop

3
Ini menonaktifkan saran tetapi masih menunjukkan baris saran (memiliki opsi mikrofon di dalamnya).
VipulKumar

61
android:inputType="textVisiblePassword" 

bekerja seperti pesona


3
Saya tidak akan menempuh rute ini. Ini adalah peretasan dan Anda tidak menyebutkan fitur keyboard lain apa yang dapat berubah ketika Anda memberi tahu itu untuk kata sandi. Gunakan "text | textNoSuggestions".
Michael Peterson

2
@ P1X3L5 textNoSuggestions tidak bekerja untuk banyak perangkat. Sayangnya peretasan ini diperlukan sampai Google memperbaikinya
Tariq

1
bagi saya itu lebih baik, ini juga menghilangkan strip di atas keyboard (nexus 5) yang tidak harus benar untuk semua perangkat tetapi memberikan kinerja yang lebih baik untuk beberapa pengguna (ini juga mematikan kemampuan untuk input ucapan)
Arkadiusz Cieśliński

1
ini berfungsi untuk menghapus karakter .titik yang ditambahkan di akhir kata jika dua spasi diketik setelah kata itu. Saya menggunakannya untuk Action bar searchView ((SearchView) MenuItemCompat.getActionView(searchItem)) .setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
Gene Bo

Ini adalah satu-satunya solusi yang berhasil untuk saya. Jawaban lain tidak berfungsi saat berpindah melalui formulir dan kembali ke bidang. Google adalah sekelompok orang bodoh. Merilis fitur sederhana yang tidak lengkap dan tidak teruji dengan baik.
angryITguy

41

Cara melakukannya:

  1. Secara terprogram
editText.inputType = InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS
  1. XML
android:inputType="textNoSuggestions"

Jika Anda sudah menyetel beberapa flag, maka:

  1. Secara terprogram
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

Pendekatan paling andal yang saya temukan untuk menghilangkan pelengkapan otomatis adalah dengan menggunakan

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD 

pada kontrol EditText Anda. Seperti yang dilaporkan Charlie dalam jawaban berbeda di halaman ini,

android:inputType="textVisiblePassword"

adalah versi XML dari tanda ini.

Anda dapat menggabungkan bendera ini dengan

InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS

Saya telah menggunakan InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS tanpa InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD, yang berfungsi untuk sebagian besar ponsel, tetapi kemudian saya menemukan ponsel Samsung yang saya masih mendapatkan pelengkapan otomatis.

Android secara terprogram menonaktifkan pelengkapan otomatis / saran otomatis untuk EditText di emulator

yang disarankan menggunakan InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD.

Saya mencoba ini (bersama dengan InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS) dan berhasil. Anda dapat melihat mengapa bahkan telepon yang mungkin tidak menerima petunjuk bahwa Anda tidak ingin pelengkapan otomatis harus mengizinkannya dinonaktifkan untuk bidang kata sandi. Sesak napas, ini mungkin cara terbaik untuk mendapatkan apa yang kita inginkan dari ponsel semacam itu.

Pada beberapa perangkat saya, font sedikit diubah oleh tanda ini - yang paling mencolok untuk membedakan nol (0) dari Oh (O) dengan lebih jelas, yang jelas penting untuk menampilkan kata sandi. Tapi setidaknya itu berhasil, dan font baru itu tidak menarik.

Meskipun posting yang saya temukan saran ini sudah lama, ponsel yang saya uji sangat baru - Samsung Galaxy Note II (SPH-L900) stok Android 4.1.2 dari Sprint. Keyboard yang dipilih adalah "Samsung Keyboard", dan tampaknya ini adalah default untuk ponsel ini saat pelanggan menerimanya dari Sprint. Jadi masalah ini tampaknya telah bertahan selama bertahun-tahun setidaknya untuk beberapa lini ponsel Samsung yang penting.

Bagi Anda yang, seperti saya, tidak memiliki perangkat uji Samsung, ini bisa menjadi informasi penting.


3
Tidak berfungsi pada Samsung S3 dengan firmware saat ini. Ups.
Nama Tampilan

@SargeBorsch: Apakah Anda mengatakan bahwa TYPE_TEXT_VARIATION_VISIBLE_PASSWORD bersama dengan TYPE_TEXT_FLAG_NO_SUGGESTIONS masih melakukan pelengkapan otomatis pada S3 Anda? Jadi, apakah Anda menggunakan keyboard stok? Saya tidak memiliki S3 tetapi telah mencoba aplikasi saya (yang menggunakan pendekatan di atas) pada S3 di masa lalu dan tidak ada pelengkapan otomatis. Saya memiliki S4 yang menjalankan Android 4.4 (Cyanogenmod) dan juga tidak selesai secara otomatis.
Carl

@SargeBorsch: Jika Anda ingin mencoba aplikasi yang menggunakan pendekatan di atas pada S3 Anda, ini adalah milik saya: play.google.com/store/apps/… Akan tertarik untuk mendengar apakah bidang Periksa Kata di bagian bawahnya app (yang menggunakan tanda di atas) mencoba melengkapi otomatis di perangkat Anda. TIA.
Carl

Terima kasih, akan segera memeriksanya
Nama Tampilan

> "Apakah Anda mengatakan bahwa TYPE_TEXT_VARIATION_VISIBLE_PASSWORD bersama dengan TYPE_TEXT_FLAG_NO_SUGGESTIONS masih melakukan pelengkapan otomatis pada S3 Anda?" Ya persis. Meskipun ada juga jenis E-mail, karena ini adalah masukan email…
Nama Tampilan

20

Untuk Android versi 8.0 atau di atasnya kode ini tidak berfungsi dan untuk textview autocomplete juga kode ini tidak berfungsi jadi saya akan menyarankan Anda untuk menggunakan kode di bawah ini untuk Nonaktifkan saran otomatis di 8.0 atau lebih tinggi android vesrion gunakan properti 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" />

dan untuk tampilan teks LengkapiOtomatis seperti ini gunakan Bidang untuk Menonaktifkan saran Otomatis 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
Hebat! Ini adalah satu-satunya hal yang berhasil bagi saya.
Laurel Thomson

Satu-satunya hal yang berhasil untuk saya, terima kasih @MaheshKeshvala, diberi suara positif untuk menyelamatkan hari saya.
Ravi Vaniya

Pengisian otomatis bukanlah pelengkapan otomatis keyboard, ini adalah fitur yang berbeda. Pengisian otomatis ditangani oleh OS, sedangkan pelengkapan otomatis ditangani oleh pengembang keyboard (semoga).
milosmns

11

Anda dapat mengatasi masalah ini dengan menggunakan ini:

android:importantForAutofill="no" 

Android O memiliki fitur untuk mendukung pengisian otomatis untuk bidang, Cukup gunakan ini di xml Anda, Ini akan menonaktifkan petunjuk isi otomatis


itu hanya berhasil untuk saya .... Terima kasih
Akash kumar

7

Karena ini masih menjadi masalah, saya akan memposting jawaban ini. android: inputType = "textVisiblePassword" berfungsi tetapi tidak diinginkan, pertama karena salah merepresentasikan masukan dan kedua karena menonaktifkan Ketikan Isyarat!

Sebagai gantinya saya harus menggunakan KEDUA flags textNoSuggestions dan textFilter. Salah satu saja tidak berhasil.

android:inputType="textCapSentences|textFilter|textNoSuggestions"

TextCapSentences adalah karena alasan lain. Tetapi inputType ini tetap mengetik gesekan dan menonaktifkan bilah alat saran.


7

Saya mendapatkan hal ini di ponsel samsung yang menjalankan 4.4.4. Ini memecahkan masalah saya

android:inputType="text|textVisiblePassword|textNoSuggestions"

Sama pada Samsung yang menjalankan 8.1. Satu-satunya hal yang berhasil bagi saya adalah android: inputType = "textVisiblePassword | textNoSuggestions"
Eino Gourdin

4

Oke, masalahnya adalah - di Eclipse Anda tidak mendapatkan saran untuk bendera bernama: textNoSuggestion

Dan Anda tidak dapat menyetelnya di main.xml (tempat Anda mendesain UI) karena atribut untuk inputType itu tidak dikenali. Jadi Anda bisa mengaturnya dalam kode menggunakan int const:

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

Dan terima kasih jasta00 karena telah membantu saya menemukan jawaban untuk yang satu ini.


6
Ini melakukan pekerjaan ... .setInputType (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
w. Donahue

2
Setuju, gunakan konstanta bukan nilainya
David Snabel-Caunt

1
@ kape123 Anda tidak dapat menyetel android: inputType = "textNoSuggestions" di xml karena target pembuatan Anda lebih rendah dari 5 api
kreker

Perhatikan bahwa untuk beberapa ponsel Samsung, pelengkapan otomatis keyboard standar tidak dimatikan oleh InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS. Satu orang menyarankan menggunakan InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD di pos yang agak lama ini: stackoverflow.com/questions/6281514/…
Carl


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

Ini akan membantumu.


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

Anda cukup menggunakan metode EditText setThreshold(). Tetapkan ambang menjadi misalnya 100 saat Anda tidak ingin menampilkan prediksi. Jika Anda ingin mengaktifkan kembali menampilkan prediksi, setel kembali ke int kecil seperti 1 atau 2 tergantung pada kebutuhan Anda.


tidak ada setThreshold () untuk EditText, dapatkah Anda menjelaskan?
behelit
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.