newbie
newbie

Reputation: 14950

Imagebutton change programmatically?

I'm trying to change the image of the ImageButton programmatically.

I'm trying to copy this code, but the setBackgroundDrawable is already deprecated.

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

My button was created using xml as follows:

   <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"/>

Upvotes: 70

Views: 71713

Answers (8)

GoldCat
GoldCat

Reputation: 81

In Kotlin you can use this code:

val myImageButton = findViewById<ImageButton>(R.id.myImageButton)  

myImageButton.setOnClickListener {

     (myImageButton as ImageButton).setImageResource(R.drawable.myIcon) 

}

Upvotes: 2

Jimale Abdi
Jimale Abdi

Reputation: 2844

For kotlin this works for me

yourimagebuttonID.setImageResource(R.drawable.ic_check_black_24dp)

Upvotes: 0

Hasan A Yousef
Hasan A Yousef

Reputation: 24928

Using Kotlin, you can do this:

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

Upvotes: 0

ziniestro
ziniestro

Reputation: 696

Hi you can use the following code

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())));
}

Hope this will help you.

Upvotes: 4

Budius
Budius

Reputation: 39836

your code is trying to change the background of the button. not its image. Those are two different things

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

Upvotes: 158

MuraliGanesan
MuraliGanesan

Reputation: 3261

Try this its working for me,Change the background image programmatically,

 image.setBackgroundResource(R.drawable.ico);

Upvotes: 20

GrIsHu
GrIsHu

Reputation: 23638

Just try out this way:

((ImageButton) view).setImageDrawable(replacer);

Upvotes: 1

f.old
f.old

Reputation: 343

Try ((ImageButton) view).setImageDrawable(replacer);

Upvotes: -4

Related Questions