J'ai créé une vue personnalisée (trouvez-la ici ) avec un attribut déclarable de type enum. En xml, je peux maintenant choisir l'une des entrées d'énumération pour mon attribut personnalisé. Maintenant, je veux créer une méthode pour définir cette valeur par programme, mais je ne peux pas accéder à l'énumération.
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"/>
Ce dont j'ai besoin, c'est quelque chose comme: mCustomView.setIcon(R.id.enum_name_x);
Mais je ne trouve pas l'énumération ou je n'ai même aucune idée de comment je peux obtenir l'énumération ou les noms de l'énumération.
la source
int
. Steve Moretz l'a. Je me sens stupide de ne pas le voir, mais il est 4h30 du matin . Il est temps d'Eh bien pour la raison. Assurez-vous que vos ordinaux sont les mêmes dans votre style déclaré que dans votre déclaration Enum et accédez-y sous forme de tableau.
la source
Permettez-moi d'ajouter une solution écrite en kotlin. Ajouter une fonction d'extension en ligne:
Maintenant, obtenir enum est simple:
la source
Je sais que cela fait un moment que la question a été publiée, mais j'ai eu le même problème récemment. J'ai piraté ensemble un petit quelque chose qui utilise JavaPoet de Square et des éléments du build.gradle qui créent automatiquement une classe Java enum à partir de attrs.xml lors de la construction du projet.
Il y a une petite démo et un readme avec une explication sur https://github.com/afterecho/create_enum_from_xml
J'espère que ça aide.
la source