Eklenen EditText bir TextInputEditText değil. Lütfen bunun yerine o sınıfı kullanmaya geçin


94

Bir EditTextiç a kullanıyorum TextInputLayout, ancak destek kitaplığını 23.2.0'a yükselttikten sonra, logcat'te bu uyarıyı alıyorum, normal EditTextve a arasındaki fark nedir TextInputEditText? Bunun için herhangi bir belge bulamıyorum.


destek kitaplığımı 23.2.1'e yükselttim ancak TextInputEditText hala kodumda çözülemiyor . Nasıl çözdün?
Edijae Crusar

Yanıtlar:


110

Bunu ben de merak ediyordum, Daniel Wilson belgeleri topladı, ancak eğitimsiz bir göz için bu pek bir şey ifade etmiyor. Her şey şununla ilgili: "ayıklama modu" , alan çok küçük olduğunda, örneğin bir telefondaki manzara gibi, gösterilen görünüm türünü ifade eder. Giriş yöntemi düzenleyicisi (IME) olarak Google Klavye ile Galaxy S4 kullanıyorum.

Görünür IME'siz yatay kullanıcı arayüzü

Odağa (Açıklamaya) bağlı olarak TextInputLayout, ipucunu düzenleyicinin dışına iten eylemi görebilirsiniz . Burada özel bir şey yok, TextInputLayoutyapılması gereken bu.

Görünür IME'siz yatay kullanıcı arayüzü

Yatay kullanıcı arayüzü boş Ad alanını düzenleme

Adı düzenlerken, IME'nin düzenlemekte olduğunuz şey hakkında size bir ipucu vermediğini görebilirsiniz.

Yatay kullanıcı arayüzü boş Ad alanını düzenleme

Yatay kullanıcı arayüzü boş Açıklama alanını düzenleme

Açıklamayı düzenlediğinizde, IME'nin düzenlemekte olduğunuz şey hakkında size bir ipucu verdiğini görebilirsiniz.

Yatay kullanıcı arayüzü boş Açıklama alanını düzenleme

Düzen XML'leri

İki alan arasındaki fark, EditTextVS türleridir TextInputEditText. Burada önemli olan TextInputLayout, içinde android:hintEditText'e sahip olmamasıdır, bu, TextInputEditTextbirkaç satırlık Java kodunun büyük bir fark yarattığı durumdur .

İsim alanı

<android.support.design.widget.TextInputLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Item Name"
    >
    <EditText
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
</android.support.design.widget.TextInputLayout>

Açıklama alanı

<android.support.design.widget.TextInputLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Item Description"
    >
    <android.support.design.widget.TextInputEditText
        android:id="@+id/description"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textMultiLine"
        android:minLines="4"
        android:scrollbars="vertical"
        />
</android.support.design.widget.TextInputLayout>

3
destek kitaplığımı 23.2.1'e yükselttim ancak TextInputEditText hala kodumda çözülemiyor. Nasıl çözdün?
Edijae Crusar

Tasarım kitaplığınız da var mı? Bu desteklenmiyor.
TWiStErRob

1
Hızlı not: Belgelere göre, android:hintmülkün TextInputEditTextyerine girmesi gerekiyor TextInputLayout.
DriesOeyen

1
@luxsypher onu düşürmeyi ve EditText'i bir TextInputLayout'a koymanın
Edijae Crusar

1
@ jeet.chanchawat bu bir yukarı yayın, yani güvenlidir. Her zaman size gereken işlevselliği (= API) sağlayan en genel türü kullanmalısınız. Kullanım TextInputEditText, kullanıcı arayüzünün bir uygulama detayıdır.
TWiStErRob

35

Bunun için herhangi bir belge yoktur, ancak sınıf EditTexttek bir ekstra özellik ile normaldir:

Bu sınıfı kullanmak, IME'de "ayıklama" modundayken bir ipucu görüntülememize olanak tanır.

Özellikle EditorInfo.hintText. TextInputLayoutSınıfta, alt EditTextwidget'ın bir parçası olmak yerine ipucunu ve görünümünü belirtebileceğinizi fark edeceksiniz .

Bunu yapmanız gerekiyorsa, bir kullanmalısınız, TextInputEditTextböylece TextInputLayout.


2
herhangi bir örnek? Ne önerdiğiniz hakkında hiçbir fikrim yok
2016

4

Esasen aynı şeyler ama bence TextInputEditTextdaha fazla özelliği ve muhtemelen niteliği var. Olarak değiştirdim TextInputEditTextve her şey çalıştı ve standartta daha önce olduğu gibi göründü EditText.


Zaten TextInputLayout kullanıyorum, TextInputEditText
Silvia H

Özür dilerim, TextInputEditText'ten bahsediyordum ama söz konusu düzen. Cevabı düzenledim
Nick Mowen

0

Tek fark, cihazınız yatay moddayken TextInputEditTextipucu gösterecek, EditTextolmayacak.


-3

Bu sorunu yaşadım ve xml dosyamdaki şu satırı sildim:

android: fitsSystemWindows = "true"

ve hata ortadan kalktı.

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.