Pertanyaan EditText yang ditambahkan bukan TextInputEditText. Harap beralih menggunakan kelas itu


Saya menggunakan sebuah EditText di dalam TextInputLayout, tetapi setelah memutakhirkan perpustakaan dukungan ke 23.2.0, saya mendapatkan peringatan ini di logcat, Apa perbedaan antara reguler EditText dan a TextInputEditText? Saya tidak bisa menemukan dokumentasi untuk itu.


76
2018-03-03 15:13


asal


Jawaban:


Saya juga memikirkan hal ini, Daniel Wilson mengumpulkan dokumentasi, tetapi untuk mata yang tidak terlatih itu tidak berarti banyak. Inilah yang semuanya tentang: "mode ekstrak" mengacu pada jenis tampilan yang ditunjukkan ketika ruang terlalu kecil, misalnya lanskap di telepon. Saya menggunakan Galaxy S4 dengan Google Keyboard sebagai IME.

Landscape UI tanpa IME yang terlihat

Berdasarkan fokus (pada Deskripsi) Anda bisa melihat TextInputLayout dalam aksi mendorong petunjuk di luar editor. Tidak ada yang istimewa di sini, ini adalah apa TextInputLayout seharusnya dilakukan.

Landscape UI without visible IME

Lansekap UI mengedit bidang Nama kosong

Mengedit Nama Anda dapat melihat bahwa IME tidak memberi Anda petunjuk tentang apa yang Anda edit.

Landscape UI editing empty Name field

Pengeditan UI lanskap kosong Bidang deskripsi

Mengedit Deskripsi Anda dapat melihat bahwa IME memberi Anda petunjuk tentang apa yang Anda edit.

Landscape UI editing empty Description field

Layout XML

Perbedaan antara dua bidang adalah tipenya EditText VS TextInputEditText. Yang penting di sini adalah itu TextInputLayout memiliki android:hint dan bukan EditText yang dibungkus, inilah yang terjadi saat itu TextInputEditTextBeberapa 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>

92
2018-03-28 18:53



Tidak ada dokumentasi untuk itu, tetapi kelasnya biasa EditText dengan satu fitur tambahan:

Menggunakan kelas ini memungkinkan kita untuk menampilkan petunjuk di IME ketika dalam mode 'ekstrak'.

Khususnya mengatur EditorInfo.hintText. Anda akan melihat di TextInputLayout kelas Anda dapat menentukan petunjuk dan penampilan itu bukan sebagai bagian dari anak EditText widget.

Jika Anda perlu melakukan itu, Anda harus menggunakan TextInputEditText jadi ia memperhatikan info petunjuk yang Anda tentukan di TextInputLayout.


26
2018-03-04 18:19



Mereka pada dasarnya adalah hal yang sama, tetapi saya pikir TextInputEditText memiliki lebih banyak fitur dan kemungkinan atribut. Saya mengubah ke TextInputEditText dan semuanya bekerja dan tampak seperti sebelumnya dengan standar EditText.


4
2018-03-03 15:15



Pertanyaan ini sudah tua, namun saya memiliki masalah ini dan hanya menghapus baris ini di file xml saya: android: fitsSystemWindows = "true", dan kesalahan menghilang.


-1
2017-07-05 23:45