Bagaimana saya bisa menyembunyikan bagian bawah EditText (baris prompt dengan serif kecil di ujungnya)?
Mungkin ada cara yang lebih baik untuk melakukan apa yang saya inginkan: Saya memiliki tata letak dengan EditText. Biasanya, ini menampilkan baik-baik saja di mana pengguna dapat mengetuknya dan mulai memasukkan atau mengedit teks.
Namun, kadang-kadang, saya ingin menggunakan tata letak yang sama (menyederhanakan logika lain) untuk menampilkan data yang sama dengan cara hanya baca. Saya ingin presentasi serupa - seharusnya memiliki tinggi dan font yang sama, tetapi tidak memiliki underbar.
Sebagai ukuran stop-gap, saya akan menerapkan ini dengan menghapus EditText dan mengganti TextView. Saya pikir itu akan memberikan hasil yang diinginkan, tetapi sepertinya jalan memutar cara yang mahal untuk melakukan sesuatu yang seharusnya mudah dilakukan dengan mengubah atribut.
sumber
Jawaban:
Anda dapat mengatur
EditText
agar gambar transparan yang dapat digambar atau hanya digunakanatau
atau secara terprogram
sumber
android:background="@android:color/transparent"
android:background="@android:color/transparent"
penyebab masalah hilangnya margin yang sama ... Apakah ada contoh di mana saja seseorang membuat custom drawable seperti itu?Atur latar belakang ke nol.
sumber
android:background="@android:color/transparent
karena@null
menakutkan.@null
menakutkan?Anda dapat mengatur
EditText
'sbackgroundTint
nilai untuk warna tertentu. Jika Anda mengatur warna transparan, underbar seharusnya hilang.android:backgroundTint="@color/Transparent"
<color name="Transparent">#00000000</color>
Tetapi Anda dapat menggunakan ini dalam
Api v21(Lollipop)
atau lebih tinggisumber
Harap tetapkan latar belakang edittext Anda sebagai
android:background="#00000000"
Itu akan berhasil.
sumber
Anda dapat melakukannya secara terprogram menggunakan
setBackgroundResource
:sumber
Yang saya lakukan adalah membuat Shape drawable dan mengaturnya sebagai latar:
Catatan: Saya benar-benar menggunakan
@dimen
dan@color
nilai untuk firelds, tapi saya sudah menyederhanakan file bentuk di sini untuk kejelasan.sumber
Menggunakan salah satu properti:
ATAU
berhasil bagi saya untuk menyembunyikan garis bawah EditText.
Namun, harap dicatat bahwa hal itu kemudian menyebabkan masalah jarak dengan TextInputLayout yang saya telah mengelilingi
EditText
sumber
Berikut cara untuk menyembunyikannya, tanpa merusak lapisan default:
pemakaian:
Memperbarui:
Jika Anda selalu melewati nol, Anda dapat mengkodifikasikannya dalam metode (dan Anda mungkin juga akan kelebihan EditText itu sendiri)
sumber
Anda harus menetapkan minWidth juga, jika tidak kursor akan hilang jika teksnya kosong.
sumber
Dalam kasus saya, saya menggunakan latar belakang kustom untuk mengedit teks sehingga pengaturan latar belakang ke @null atau pengaturan warna untuk transparan bukan solusi bagi saya jadi saya memainkan sedikit trik yang bekerja dengan baik saya hanya mengatur
dan itu menyelesaikan pekerjaan dengan cukup baik .. ini bukan solusi optimal tetapi berhasil
sumber
Saya memiliki sesuatu seperti ini yang sangat sangat berguna:
di mana generalEditText adalah EditText saya dan warna putih adalah:
Ini tidak akan menghapus padding dan EditText Anda akan tetap apa adanya. Hanya garis di bagian bawah yang akan dihapus. Terkadang lebih bermanfaat untuk melakukannya seperti ini.
Jika Anda menggunakan
android:background="@null"
sebanyak yang disarankan Anda kehilangan padding dan EditText menjadi lebih kecil. Setidaknya, itu adalah kasus saya.Sedikit catatan tambahan adalah jika Anda menetapkan latar belakang nol dan mencoba kode java yang saya berikan di atas, aplikasi Anda akan macet tepat setelah menjalankannya. (karena memiliki latar belakang tetapi nol.) Mungkin jelas tapi saya pikir menunjukkan itu penting.
sumber
Saya menemukan hal yang paling aneh! Jika Anda mengaturnya untuk
null
menggunakan Pengikatan Data:android:background="@{null}"
Maka tidak hanya latar belakang dihapus, tetapi tampilan masih memiliki lapisan yang dihitung dari latar belakang default. Jadi karena alasan tertentu pengaturan null yang ditangguhkan tidak menghapus lapisan dari bg sebelumnya ..? Padding pada view adalah kiri / atas / kanan 4dp, 13dp bawah (dari level emulator 21).
Mungkin tidak memiliki hasil akhir yang sama di semua level API, jadi waspadalah! Seseorang memberi tahu saya jika Anda menguji ini dan merasa dapat diandalkan. (Perhatikan juga bahwa bantalan bawah menonjol karena garis bawah yang asli. Jadi, Anda mungkin ingin mengubahnya dalam XML, atau mengatur ulangnya dalam kode setelah dimuat ke atas ...
sumber
jika teks edit Anda sudah memiliki latar belakang maka Anda dapat menggunakan berikut ini.
sumber
Jika Anda ingin ini memengaruhi semua instance EditText dan kelas apa pun yang mewarisi darinya, maka Anda harus menetapkan nilai atribut untuk theme Anda, editTextBackground di tema Anda.
Contoh dari drawable yang saya gunakan adalah:
Ini adalah versi yang sedikit dimodifikasi dari apa implementasi desain material standar.
Ketika diterapkan itu akan membuat semua EditText Anda menghapus garis bawah di seluruh aplikasi, dan Anda tidak harus menerapkan gaya untuk masing-masing dan setiap orang secara manual.
sumber
Cukup Gunakan Ini
sumber
Anda juga dapat menentukan STYLE untuk editText Anda sehingga Anda dapat mengelompokkan kembali semua properti secara umum. Ini sangat kuat jika Anda harus mengedit beberapa teks yang perlu memiliki perilaku
Masukkan kode ke res / values / styles.xml
Setelah itu Anda hanya perlu menyebutnya di editText Anda
sumber
Gunakan secara terprogram:
editText.setBackground(null)
Dari
xml
penggunaan:android:background="@null"
sumber
Atau
sumber
android: inputType = "textVisiblePassword | textMultiLine" android: background = "@ android: color / transparan"
... ini bukan solusi optimal tetapi berhasil.
sumber
Atur latar belakang ke nol
sumber
Dalam kasus saya,
editText.setBackgroundResource(R.color.transparent);
yang terbaik.Itu tidak menghapus padding default, hanya di bawah bar.
R.color.transparent = #00000000
sumber
jika Anda menggunakan latar belakang maka Anda harus menggunakan tag ini
sumber
Untuk mempertahankan margin dan warna latar belakang gunakan:
background.xml
Edit Teks:
sumber