Saya memiliki gaya LinearLayout
yang saya buat agar terlihat seperti a button
, dan itu berisi beberapa elemen teks / ImageView. Saya ingin membuat keseluruhan LinearLayout
tindakan seperti a button
, khususnya untuk memberikan status yang ditentukan dalam a sehingga memiliki latar belakang yang berbeda saat ditekan.
Apakah ada cara yang lebih baik daripada membuat ImageButton
ukuran seluruh Tata Letak dan pemosisian secara mutlak?
android
android-layout
Jason Prado
sumber
sumber
LinearLayout
sepertiToggleButton
Jawaban:
Saya mengalami masalah ini sekarang. Anda harus menyetel LinearLayout menjadi dapat diklik. Anda bisa melakukan ini dalam XML dengan
Atau di kode dengan
Bersulang!
sumber
android:clickable="false"
untuk mencegahnya memblokir peristiwa klik.Jika Anda ingin menambahkan perilaku latar belakang default Android untuk membuat
Layout
tindakan seperti "dapat diklik"View
, setel yang ditargetkanLayout
:API 11+ (Android Murni):
API 7+ (Pustaka Dukungan Android + AppCompat):
API apa pun:
Jawaban di atas masih benar tetapi tidak membantu saya untuk hanya menambahkan status UI yang ditekan dan dilepaskan default (seperti
ListView
misalnya).sumber
Saya menggunakan jawaban pertama dan kedua. Tetapi linearlayout saya memiliki gambar dan teks dengan warna background, jadi saya harus mengubah "background" menjadi "foreground"
linearlayout
sumber
Pertama, Anda akan menginginkan pemilih untuk menentukan status yang berbeda. Misalnya, dalam file XML:
Saya belum mencobanya, tetapi Anda mungkin dapat menyetel latar belakang android: LinearLayout ke pemilih ini, dan menyetel android: dapat diklik menjadi true dan ini akan berhasil.
Jika tidak, Anda dapat beralih menggunakan RelativeLayout, dan membuat elemen pertama menjadi tombol dengan selektor ini sebagai latar belakang dan fill_parent untuk lebar dan tinggi tata letaknya. Dalam kasus ini, cukup gunakan Tombol biasa dan setel android: background ke pemilih Anda. Anda tidak perlu meletakkan teks di tombol Anda.
sumber
Button
. Anda dapat menggantionDraw(Canvas)
untuk melakukan hal khusus apa pun yang Anda butuhkan (yaitu, menggambar gambar atau teks di dalam tombol).Dalam aplikasi yang sedang saya kerjakan, saya perlu membuat LinearLayout secara dinamis. Dalam hal ini perintahnya
tidak berfungsi sebagaimana mestinya. Meskipun saya mungkin melewatkan sesuatu, saya berhasil mengeksploitasi setOnTouchListener untuk mendapatkan hasil yang sama dan saya mengirimkan kode jika ada yang memiliki kebutuhan yang sama.
Kode berikut membuat LinearLayout dengan dua tampilan teks dan sudut bundar, berubah warna saat ditekan.
Pertama, buat dua file xml dalam folder drawable, satu untuk normal dan satu lagi untuk keadaan linearlayout yang ditekan.
Status normal xml (drawable / rounded_edges_normal.xml)
Status ditekan xml (drawable / rounded_edges_pressed.xml). Satu-satunya perbedaan adalah warnanya ...
Kemudian kode berikut melakukan pekerjaannya
Variabel global:
Masuk
onCreate()
:sumber
Atur saja atribut ini
sumber
Cukup tambahkan background attr / selectableItemBackground ke linear layout dan juga buat linearlayout itu bisa diklik
contoh:
Itu membuat linearlayout bertindak seperti tombol saat ditekan. :)
sumber
Ini membantu tetapi jika Anda ingin memberi warna latar belakang dan membuat tata letak linier dapat diklik seperti item daftar. Setel latar belakang dengan warna pilihan Anda dan setel warna latar depan ke? Android: attr / selectableItemBackground, setel true focusable, dan true clickable
Kode sampel
sumber
Jawaban sebelumnya adalah tentang bagaimana mengatur latar belakang default di file xml. Di sini hal yang sama dalam kode:
sumber