Saya menggunakan EditText
inside a TextInputLayout
, tapi setelah mengupgrade support library ke 23.2.0, saya mendapatkan peringatan ini di logcat, Apa perbedaan antara regular EditText
dan a TextInputEditText
? Sepertinya saya tidak dapat menemukan dokumentasi untuk itu.
android
android-layout
android-edittext
android-support-library
android-textinputlayout
Silvia H.
sumber
sumber
Jawaban:
Saya juga bertanya-tanya tentang ini, Daniel Wilson mengumpulkan dokumentasi, tetapi bagi mata yang tidak terlatih itu tidak berarti banyak. Ini semua tentang: "mode ekstrak" mengacu pada jenis tampilan yang ditampilkan saat ruang terlalu kecil, misalnya lanskap di ponsel. Saya menggunakan Galaxy S4 dengan Google Keyboard sebagai editor metode masukan (IME).
UI lanskap tanpa IME yang terlihat
Berdasarkan fokus (pada Deskripsi), Anda dapat melihat
TextInputLayout
aksi mendorong petunjuk di luar editor. Tidak ada yang istimewa di sini, inilah yangTextInputLayout
seharusnya dilakukan.Pengeditan UI lanskap bidang Nama kosong
Mengedit Nama Anda dapat melihat bahwa IME tidak memberi Anda petunjuk tentang apa yang Anda edit.
Pengeditan UI lanskap bidang Deskripsi kosong
Mengedit Deskripsi Anda dapat melihat bahwa IME memberi Anda petunjuk tentang apa yang Anda edit.
XML tata letak
Perbedaan antara kedua bidang tersebut adalah tipe
EditText
VS-nyaTextInputEditText
. Hal penting di sini adalah yangTextInputLayout
memilikiandroid:hint
dan bukan EditText yang dibungkus, ini adalah kasus ketikaTextInputEditText
beberapa baris kode Java membuat perbedaan besar.Bidang nama
<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>
Bidang deskripsi
<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>
sumber
android:hint
properti seharusnya masuk,TextInputEditText
bukanTextInputLayout
.TextInputEditText
adalah detail implementasi UI.Tidak ada dokumentasi untuk itu, tetapi kelasnya adalah reguler
EditText
dengan satu fitur tambahan:Secara khusus itu mengatur
EditorInfo.hintText
. Anda akan melihat diTextInputLayout
kelas Anda dapat menentukan petunjuk dan tampilannya daripada sebagai bagian dariEditText
widget anak .Jika Anda perlu melakukan itu, Anda harus menggunakan a
TextInputEditText
sehingga memperhatikan info petunjuk yang Anda tentukan diTextInputLayout
.sumber
Mereka pada dasarnya adalah hal yang sama, tetapi saya pikir
TextInputEditText
memiliki lebih banyak fitur dan kemungkinan atribut. Saya berubah keTextInputEditText
dan semuanya bekerja dan terlihat seperti sebelumnya dengan standarEditText
.sumber
Satu-satunya perbedaan adalah ketika perangkat Anda dalam mode lanskap,
TextInputEditText
akan menunjukkan petunjuk,EditText
tidak akan.sumber
Saya mengalami masalah ini dan baru saja menghapus baris ini di file xml saya:
android: fitsSystemWindows = "true"
dan kesalahan itu hilang.
sumber