Saya membuat Tampilan kustom (temukan di sini ) dengan atribut tipe enum yang dapat dideklarasikan. Dalam xml sekarang saya dapat memilih salah satu entri enum untuk atribut khusus saya. Sekarang saya ingin membuat metode untuk menyetel nilai ini secara terprogram, tetapi saya tidak dapat mengakses enum.
attr.xml
<declare-styleable name="IconView">
<attr name="icon" format="enum">
<enum name="enum_name_one" value="0"/>
....
<enum name="enum_name_n" value="666"/>
</attr>
</declare-styleable>
layout.xml
<com.xyz.views.IconView
android:id="@+id/heart_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="enum_name_x"/>
Yang saya butuhkan adalah sesuatu seperti: mCustomView.setIcon(R.id.enum_name_x);
Tapi saya tidak dapat menemukan enum atau saya bahkan tidak tahu bagaimana saya bisa mendapatkan enum atau nama enum tersebut.
sumber
int
. Steve Moretz memilikinya. Saya merasa bodoh karena tidak melihatnya, tetapi sekarang jam 4:30 . Waktunya tidur ...Demi kewarasan. Pastikan ordinal Anda sama dalam gaya yang dideklarasikan seperti dalam deklarasi Enum Anda dan akses sebagai array.
sumber
Izinkan saya menambahkan solusi yang ditulis dalam kotlin. Tambahkan fungsi ekstensi sebaris:
Sekarang mendapatkan enum itu sederhana:
sumber
Saya tahu sudah lama sejak pertanyaan itu diposting, tetapi saya mengalami masalah yang sama baru-baru ini. Saya meretas sedikit sesuatu bersama-sama yang menggunakan JavaPoet Square dan beberapa hal di build.gradle yang secara otomatis membuat kelas enum Java dari attrs.xml pada pembangunan proyek.
Ada sedikit demo dan readme dengan penjelasannya di https://github.com/afterecho/create_enum_from_xml
Semoga membantu.
sumber