La valeur de l’atsortingbut format “android: drawable” n’est pas valide

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.