J’essaie de créer des atsortingbuts personnalisés pour mon bouton mais je ne sais pas quel format je dois utiliser pour les images dans la déclaration d’atsortingbuts …
L’erreur est au format = “android: drawable” …
Vous pouvez utiliser format = “entier” , l’ ID de ressource du dessinable et AtsortingbuteSet.getDrawable (…) .
Voici un exemple.
Déclarez l’atsortingbut sous forme d’entier dans res / values / attrs.xml:
Définissez l’atsortingbut sur un identifiant pouvant être dessiné dans votre mise en page:
Obtenez le dessin à partir de l’atsortingbut dans votre classe de composant de widget personnalisé:
ImageView myIcon; //... TypedArray a = context.obtainStyledAtsortingbutes(attrs, R.styleable.MyLayout); Drawable drawable = a.getDrawable(R.styleable.MyLayout_icon); if (drawable != null) myIcon.setBackgroundDrawable(drawable);
Pour voir toutes les options possibles, cliquez ici
Je pense qu’il vaudra mieux l’utiliser comme simple référence:
Et définissez-le dans votre fichier XML comme ceci:
Et dans votre classe, définissez les atsortingbuts comme ceci:
public TCButton(Context context, AtsortingbuteSet attrs) { super(context, attrs); TypedArray a = context.getTheme().obtainStyledAtsortingbutes(attrs, R.styleable.MembershipItemView, 0, 0); Ssortingng customText; Drawable backgroundImage; try { customText = a.getSsortingng(R.styleable.TCButton_customText); backgroundImage = a.getDrawable(R.styleable.TCButton_backgroundImage); } finally { a.recycle(); } if(!TextUtils.isEmpty(customText)) { ((TextView)findViewById(R.id.yourTextView)).setText(customText); } if(null != backgroundImage) { ((ImageView)findViewById(R.id.yourImageView)).setBackgroundDrawable(backgroundImage); } }
PS: n’oubliez pas d’append cette ligne pour l’élément racine de la mise en page dans laquelle vous utilisez votre vue personnalisée
xmlns:custom="http://schemas.android.com/apk/res-auto"
Si vous ne le définissez pas, vous ne pourrez pas accéder à vos atsortingbuts personnalisés.
À partir du code AOSP, j’ai trouvé comment les ingénieurs de Google déclaraient ImageView#src
attr.
Le code ci-dessus est un exemple et il peut couvrir la plupart des cas de développement.