Apakah ada cara mudah untuk menggunakan gambar khusus untuk kotak centang? Saya ingin menduplikasi perilaku "berbintang" dari gmail. Jadi saya ingin memiliki kotak centang yang, ketika dicentang, adalah tanda bintang. Dan ketika tidak dicentang adalah bintang kosong. Apakah saya harus menggunakan imageview dan melakukan logika sendiri?
182
android:button
solusi di bawah ini jauh lebih baik daripada menggunakan atribut background!Buat pemilih kotak centang yang dapat digambar:
Pastikan kotak centang Anda seperti ini
android:button="@drawable/checkbox_selector"
sumber
Salin btn_check.xml dari android-sdk / platform / android - # / data / res / drawable ke folder drawable proyek Anda dan ubah status gambar 'on' dan 'off' ke gambar khusus Anda.
Maka xml Anda hanya perlu
android:button="@drawable/btn_check"
Jika Anda ingin menggunakan ikon Android default yang berbeda, Anda dapat menggunakan
android:button="@android:drawable/..."
sumber
res / drawable / day_selector.xml
res / layout / my_layout.xml
sumber
Jika Anda memiliki kode sumber terbuka Android, Anda dapat menemukan definisi gaya di bawah:
src / frameworks / base / core / res / res / values
sumber
Cobalah -
Tambahkan attrib ini -
Gunakan seperti -
Ini akan memperbaiki semua masalah Anda.
sumber
onSaveInstanceState()
danonRestoreInstanceState()
metode, saya pikir negara yang diperiksa akan hilang secara rotasiPilihan lain adalah menggunakan ToggleButton dengan latar belakang nol dan tombol kustom.
Di bawah contoh yang menyertakan pemilih ke warna teks juga.
toggle_selector.xml
toggle_text.xml
sumber
Jika Anda menggunakan adaptor khusus daripada
android:focusable="false"
danandroid:focusableInTouchMode="false"
diperlukan untuk membuat item daftar dapat diklik saat menggunakan kotak centang.Dalam drawable> checkbox_layout.xml
sumber
Jika Anda menggunakan androidx.appcompat: appcompat dan ingin drawable kustom (bertipe
selector
withandroid:state_checked
) untuk bekerja pada versi platform lama selain versi platform baru, Anda perlu menggunakandari pada
sumber
Berdasarkan jawaban Enselik dan Rahul.
Ini berfungsi untuk saya (sebelum dan sesudah API 21):
sumber