88 votes

Comment définir la propriété ImageButton de app:srcCompat="@drawable/pic" par voie programmatique ?

Comment régler le ImageButton propriété de

app:srcCompat="@drawable/pic"

de manière programmatique ?

Quelque chose comme myImageButton.setBackgroundResource(R.drawable.eng2); mais la propriété de app:srcCompat .

167voto

Prerak Sola Points 5531

Vous devez utiliser setImageResource() méthode.

imageButton.setImageResource(R.drawable.eng2);

0 votes

Idem pour Kotlin

25voto

Marcin Orlowski Points 24633

Tout d'abord, assurez-vous que vous avez affaire à AppCompatImageView , non régulier ImageView :

AppCompatImageView iv = (AppCompatImageView)findViewById(....);

et ensuite tu peux le faire :

iv.setImageResource(R.drawable.pic);

Voir les autres méthodes publiques dans les docs .

1 votes

J'utilise 'ImageButton' avec 'app:srcCompat="@drawable/pic"' mais le réglage sur 'setImageResource(R.drawable.pic);' fonctionne bien. Merci pour votre aide.

0 votes

Les outils de construction remplacent probablement les classes "à la volée".

0 votes

Hey Marcin, sais-tu pourquoi nous devons changer l'image de façon programmatique au lieu de donner le chemin entre app:srcCompa="drawable/"

3voto

Tom Points 2993

Utilisation de setImageResource() devrait récupérer sa ressource d'une manière rétrocompatible sans aucun effort supplémentaire.

Cependant, si vous utilisez setImageDrawable() l'ImageView/ImageButton n'aidera pas à la compatibilité ascendante et c'est à vous de fournir un dessinable compatible avec la compatibilité ascendante, ce qui est important, par exemple, si vous utilisez l'option VectorDrawables . Ce qui suit permet de charger et de définir un drawable de cette manière :

val drawable = AppCompatResources.getDrawable(context, resourceId)
image.setImageDrawable(drawable)

1voto

MachineLearner Points 486

Aucune des solutions proposées n'a fonctionné pour moi. J'utilisais un ImageView. Finalement, j'ai découvert qu'en utilisant setBackgroundResource() fonctionne pour moi.

view.setBackgroundResource(R.drawable.ic_star_black_18dp)

0voto

miPlodder Points 54

Je suppose que les autres méthodes sont dépassées et ne fonctionneraient pas au moment où j'écris ces lignes,

iv_yourImageView.setImageDrawable(getResources().getDrawable(R.drawable.your_drawable));

Ça va marcher.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X