web-dev-qa-db-fra.com

Imagebutton changer par programme?

J'essaie de modifier l'image de ImageButton par programme.

J'essaie de copier ce code, mais le setBackgroundDrawable est déjà obsolète.

public void giveClue(View view) {
    Drawable replacer = getResources().getDrawable(R.drawable.icon2);
    ((ImageButton) view).setEnabled(false);
    ((ImageButton) view).setBackgroundDrawable(replacer);
    gameAdapter.giveClue(game);
}

Mon bouton a été créé en utilisant XML comme suit:

   <ImageButton
        Android:id="@+id/ImageButton2"
        Android:layout_width="24dp"
        Android:layout_height="22dp"
        Android:layout_alignTop="@+id/imageButton1"
        Android:layout_toLeftOf="@+id/ImageButton3"
        Android:src="@drawable/icon" 
        Android:onClick="giveClue"/>

S'il vous plaît aider.

Je vous remercie.

53
newbie

votre code tente de changer l’arrière-plan du bouton. pas son image . Ce sont deux choses différentes

  ((ImageButton) view).setImageResource(R.drawable.icon2);
106
Budius

Essayez-le, cela fonctionne pour moi

 image.setBackgroundResource(R.drawable.ico);
13
MuraliGanesan

Essayez juste de cette façon: 

((ImageButton) view) .setImageDrawable (remplacement);

1
GrIsHu

Bonjour, vous pouvez utiliser le code suivant 

if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN ) 
{
    ((ImageButton) view).setImageResource(getResources().getIdentifier("icon2", "drawable", getPackageName()));
}
else 
{
    ((ImageButton) view).setImageDrawable(getDrawable(getResources().getIdentifier("icon2", "drawable", getPackageName())));
}

J'espère que ceci vous aidera.

1
ziniestro

En utilisant Kotlin, vous pouvez faire ceci:

val myImageButton = ImageButton(context).apply({
    background = null
    setImageDrawable(ContextCompat.getDrawable(context, 
                         R.drawable.ic_save_black_24px))
})
0
Hasan A Yousef