EditText için otomatik önerme kapatılsın mı?


123

EditText'te yazarken açılan bu otomatik öneri listesini programlı olarak kapatmanın bir yolu var mı?

Yanıtlar:


122

Aynı soruyu sormuştum ama yine de bu seçeneği XML dosyamda ayarlamak istedim, bu yüzden kendim bulana kadar biraz daha araştırma yaptım.

Bu satırı Düzenleme Metninize ekleyin.

android:inputType="textFilter" 

İşte bir ipucu. "Enter" tuşunu kullanabilmek istiyorsanız bu satırı kullanın.

android:inputType="textFilter|textMultiLine"

UPVOTE'İMİ ALIN! Aslında bu, bir EditText'i bir textView gibi göstermek istediğinizde gerçekten işe yarar.
sir_k

1
Birkaç Android 4.4 telefonda da çalışmıyor
çalışmıyor

API 24 / Android 7.0: android:inputType="textPersonName"Önerilen metni değiştirdim ancak yine de öneri satırını (mikrofon simgesiyle) görüntülüyor.
Neph

120
android:inputType="textNoSuggestions"  

Ayrıca daha iyi okumuştu bu


5
"TextNoSuggestions" ın yalnızca API 5 ve üzeri için çalıştığını unutmayın.
glr

89
@gyller API'si 5'ten az olan herhangi bir cihaz gördünüz mü?
kreker

15
Kullanıcılarımın% 0.23'ü 1.6 (API Seviye 4) kullanıyor. :)
Jeremy Logan

1
Daha sonra ENTER tuşunu kaybedersiniz. ENTERs android'i kullanabilmek istiyorsanız: inputType = "textNoSuggestions | textMultiLine"
barlop

3
Önerileri devre dışı bırakır ancak yine de öneri satırını gösterir (içinde mikrofon seçeneği vardır).
VipulKumar

61
android:inputType="textVisiblePassword" 

tıkır tıkır çalışıyor


3
Bu rotaya gitmezdim. Bu bir hack'tir ve klavyenin şifre için olduğunu söylediğinizde diğer hangi özelliklerinin değişebileceğinden bahsetmiyorsunuz. "Text | textNoSuggestions" kullanın.
Michael Peterson

2
@ P1X3L5 textNoSuggestions birçok cihazda çalışmaz. Maalesef bu hack, Google bunu düzeltene kadar gereklidir
Tariq

1
benim için daha iyiydi, tüm cihazlar için doğru olması gerekmeyen ancak bazı kullanıcılar için daha iyi performans sağlayan klavyenin (nexus 5) üzerindeki şeridi de kaldırıyor (aynı zamanda konuşma girişi özelliğini de kapatıyor)
Arkadiusz Cieśliński

1
bu ., kelimeden sonra iki boşluk yazılırsa kelimenin sonuna eklenen nokta karakterini kaldırmak için çalıştı . Bunu eylem çubuğu searchView için kullandım ((SearchView) MenuItemCompat.getActionView(searchItem)) .setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
Gene Bo

Benim için işe yarayan tek çözüm bu. Bir formda ilerlerken ve bir alana dönerken diğer yanıtlar işe yaramaz. Google tam anlamıyla dopdolu. Eksik ve kötü test edilmiş bu kadar basit özellikleri serbest bırakmak.
angryITguy

41

Bunu yapmanın yolları:

  1. programlama yoluyla
editText.inputType = InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS
  1. XML
android:inputType="textNoSuggestions"

Zaten ayarlanmış bazı bayraklarınız varsa, o zaman:

  1. programlama yoluyla
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

Otomatik tamamlamadan kurtulmak için bulduğum en güvenilir yaklaşım,

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD 

EditText kontrolünüzde. Charlie'nin bu sayfadaki farklı bir yanıtta bildirdiği gibi,

android:inputType="textVisiblePassword"

bu bayrağın XML sürümüdür.

Bu bayrağı şununla birleştirebilirsiniz:

InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS

Çoğu telefonda çalışan InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD olmadan InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS kullanıyordum, ancak daha sonra hala otomatik tamamlama aldığım bir Samsung telefonla karşılaştım.

Android, öykünücüde EditText için otomatik tamamlama / otomatik önerme özelliğini programlı olarak devre dışı bırakın

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD kullanılması önerilir.

Bunu denedim (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS ile birlikte) ve işe yaradı. Otomatik tamamlamayı istemediğiniz ipucunu almayan bir telefonun bile neden sahip olduğunu anlayabilirsiniz . bir şifre alanı için engelli olmaya izin vermek. Nefesimizi tutamadığımız için, bu tür telefonlardan istediğimizi almanın en iyi yolu bu olabilir.

Bazı aygıtlarımda, yazı tipi bu bayrakla biraz değiştirildi - en belirgin şekilde sıfırı (0) Oh (O) 'dan daha net bir şekilde ayırt etmek için, ki bu açıkça bir şifre görüntülemek için önemli olacaktır. Ama en azından işe yaradı ve yeni yazı tipi çekici değildi.

Bu öneriyi bulduğum gönderi eski olsa da, test ettiğim telefon çok yeniydi - bir Samsung Galaxy Note II (SPH-L900), Sprint'ten Android 4.1.2 stoku. Seçilen klavye "Samsung Klavye" idi ve görünüşe göre bu, müşteri onu Sprint'ten aldığında bu telefon için varsayılandı. Bu nedenle, görünüşe göre bu sorun, en azından bazı önemli Samsung telefon serileri için yıllar içinde devam etti.

Benim gibi Samsung test cihazına sahip olmayanlarınız için bu önemli bir bilgi olabilir.


3
Samsung S3'te bugünün üretici yazılımı ile çalışmaz. Hata.
Görünen Ad

@SargeBorsch: TYPE_TEXT_VARIATION_VISIBLE_PASSWORD'ün TYPE_TEXT_FLAG_NO_SUGGESTIONS ile birlikte S3'te hala otomatik tamamlama gerçekleştirdiğini mi söylüyorsunuz? Öyleyse, hisse senedi klavyesini kullanıyor musunuz? Bir S3'üm yok, ancak uygulamamı (yukarıdaki yaklaşımı kullanan) geçmişte bir S3'te denedim ve otomatik tamamlama yoktu. Android 4.4 (Cyanogenmod) çalıştıran bir S4'üm var ve aynı zamanda otomatik tamamlamıyor.
Carl

@SargeBorsch: S3'ünüzde yukarıdaki yaklaşımı kullanan bir uygulamayı denemek isterseniz benimki burada: play.google.com/store/apps/… Bunun altındaki Kelime Kontrol Et alanının olup olmadığını duymak ister misiniz uygulaması (yukarıdaki bayrakları kullanan) cihazınızda otomatik tamamlamayı dener. TIA.
Carl

Teşekkürler, yakında kontrol edeceğim
Görünen Ad

> "TYPE_TEXT_VARIATION_VISIBLE_PASSWORD'ün TYPE_TEXT_FLAG_NO_SUGGESTIONS ile birlikte S3'te hala otomatik tamamlama gerçekleştirdiğini mi söylüyorsunuz?" Evet kesinlikle. E-posta türü de olmasına rağmen, bir e-posta girişi olduğu için…
Görünen Ad

20

Android sürümü 8.0 veya üstü için bu kod çalışmıyor ve otomatik tamamlama metin görünümü için de bu kod çalışmıyor, bu nedenle 8.0 veya üstü android vesrion'daki otomatik önerileri devre dışı bırakmak için aşağıdaki kodu kullanmanızı öneririm . Edittext android'in bu özelliğini kullanın : 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" />

ve bunun gibi Otomatik Tamamlama metin görünümü için Otomatik öneriyi Devre Dışı Bırakmak için bu Alanı kullanın 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
Müthiş! Bu benim için işe yarayan tek şeydi.
Laurel Thomson

Benim için çalışan tek şey, thx @MaheshKeshvala, günümü kurtardığı için oy verdi.
Ravi Vaniya

Otomatik doldurma, klavye otomatik tamamlama değildir, farklı özelliklerdir. Otomatik doldurma işlemi işletim sistemi tarafından gerçekleştirilirken, otomatik tamamlama klavye geliştiricisi tarafından gerçekleştirilir (umarız).
milosmns

11

Bunu kullanarak bu sorunu çözebilirsiniz:

android:importantForAutofill="no" 

Android O, alanlar için Otomatik doldurmayı destekleme özelliğine sahiptir, Sadece bunu xml'nizde kullanın, Otomatik doldurma ipuçlarını devre dışı bırakır


sadece benim için çalıştı .... Teşekkürler
Akash kumar

7

Bu hala bir sorun olduğu için, bu cevabı göndereceğim. android: inputType = "textVisiblePassword" çalışır, ancak istenmeyen bir durumdur, çünkü birincisi girdinin yanlış bir temsilidir ve ikincisi, Hareketle Yazmayı devre dışı bıraktığı için!

Bunun yerine, textNoSuggestions ve textFilter BOTH bayraklarını kullanmak zorunda kaldım. Ya tek başına işe yaramadı.

android:inputType="textCapSentences|textFilter|textNoSuggestions"

TextCapSentences başka nedenlerle yapıldı. Ancak bu inputType, hızlıca yazmayı sürdürdü ve öneri araç çubuğunu devre dışı bıraktı.


7

Bu şeyi 4.4.4 çalıştıran Samsung telefonlarında alıyordum. Bu benim sorunumu çözdü

android:inputType="text|textVisiblePassword|textNoSuggestions"

8.1'de çalışan Samsung ile aynı. Benim için işe yarayan tek şey android: inputType = "textVisiblePassword | textNoSuggestions"
Eino Gourdin

4

Tamam, sorun şuydu - Eclipse'de şu adla işaretlenmiş bayrak için öneri almıyorsunuz: textNoSuggestion

Ve bunu main.xml'de (kullanıcı arayüzünü tasarladığınız yer) ayarlayamazsınız çünkü inputType için bu öznitelik tanınmaz. Böylece, int const kullanarak kodda ayarlayabilirsiniz:

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

Ve bunun cevabını bulmama yardımcı olduğunuz için teşekkürler jasta00 .


6
Bu işi yapar ... .setInputType (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
w.donahue

2
Kabul edildi, değeri değil sabiti kullanın
David Snabel-Caunt

1
@ kape123 İnşa hedefiniz 5
api'den

Bazı Samsung telefonlar için standart klavye otomatik tamamlamanın InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS tarafından kapatılmadığını unutmayın. Bir kişi bu oldukça eski gönderide InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD kullanılmasını öneriyor: 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);

Bu sana yardım edecek.


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

Sadece EditText setThreshold()yöntemini kullanabilirsiniz. Tahminleri göstermek istemediğinizde 100 diyelim ki eşiği ayarlayın. Tahminleri göstermeyi yeniden etkinleştirmek istiyorsanız, ihtiyaçlarınıza bağlı olarak 1 veya 2 gibi küçük bir int olarak ayarlayın.


EditText için setThreshold () yok, lütfen açıklar mısınız?
behelit
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.