Utworzyłem niestandardowy widok (znajdź go tutaj ) z deklarowanym stylem atrybutu typu enum. W xml mogę teraz wybrać jeden z wpisów wyliczenia dla mojego atrybutu niestandardowego. Teraz chcę utworzyć metodę ustawiania tej wartości programowo, ale nie mogę uzyskać dostępu do wyliczenia.
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"/>
Potrzebuję czegoś takiego: mCustomView.setIcon(R.id.enum_name_x);
ale nie mogę znaleźć wyliczenia lub nawet nie mam pojęcia, w jaki sposób mogę uzyskać wyliczenie lub nazwy wyliczenia.
źródło
int
. Steve Moretz to ma. Czuję się głupio, że tego nie widzę, ale jest 4:30 . Czas do łóżka ...Cóż, przez wzgląd na zdrowie psychiczne. Upewnij się, że liczby porządkowe są takie same w zadeklarowanym stylu jak w deklaracji Enum i uzyskaj do nich dostęp jako tablicę.
źródło
Dodam rozwiązanie napisane w kotlinie. Dodaj wbudowaną funkcję rozszerzenia:
Teraz uzyskanie wyliczenia jest proste:
źródło
Wiem, że minęło trochę czasu od opublikowania pytania, ale ostatnio miałem ten sam problem. Zhakowałem razem coś, co używa JavaPoet Square i niektórych rzeczy w build.gradle, które automatycznie tworzą klasę wyliczenia Java z attrs.xml podczas budowania projektu.
Jest małe demo i plik readme z wyjaśnieniem na https://github.com/afterecho/create_enum_from_xml
Mam nadzieję, że to pomoże.
źródło