Saya memiliki ImageView yang memiliki sumber gambar yang dapat digambar yang disetel ke pemilih. Bagaimana cara mengakses pemilih secara terprogram dan mengubah gambar dari status yang disorot dan tidak disorot?
Berikut adalah kode pemilih:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/iconSelector">
<!-- pressed -->
<item android:state_pressed="true" android:drawable="@drawable/btn_icon_hl" />
<!-- focused -->
<item android:state_focused="true" android:drawable="@drawable/btn_icon_hl" />
<!-- default -->
<item android:drawable="@drawable/btn_icon" />
</selector>
Saya ingin bisa mengganti btn_icon_hl
dan btn_icon
dengan gambar lain.
Jawaban:
Sejauh yang dapat saya temukan (saya telah mencoba melakukan sesuatu yang serupa sendiri), tidak ada cara untuk mengubah satu keadaan setelah StateListDrawable telah ditentukan. Namun, Anda dapat menentukan yang BARU melalui kode:
Dan Anda bisa menyimpan dua di antaranya, atau membuat yang berbeda sesuai kebutuhan.
sumber
Saya memiliki masalah yang sama dan melangkah lebih jauh untuk menyelesaikannya. Namun satu-satunya masalah adalah Anda tidak dapat menentukan NavStateListDrawable dalam xml, jadi Anda harus menyetel latar belakang elemen UI Anda melalui kode. Metode onStateChange kemudian harus diganti untuk memastikan bahwa setiap kali level drawable utama berubah, Anda juga memperbarui level daftar level anak.
Saat membuat NavStateListDrawable Anda harus meneruskan level ikon yang ingin Anda tampilkan.
Untuk semua status drawable tombol navigasi yang berbeda, saya memiliki sesuatu seperti berikut ini.
Saya akan memposting ini sebagai pertanyaan dan jawaban, tetapi mengingat Anda telah mengajukan pertanyaan itu sendiri, ini dia. Catatan, ini menghemat banyak definisi file xml. saya turun dari sekitar 50-100 definisi xml menjadi sekitar 4 !.
sumber