Imagebutton change programmatically?

AndroidImagebutton

Android Problem Overview


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

Android Solutions


Solution 1 - Android

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

Solution 2 - Android

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

 image.setBackgroundResource(R.drawable.ico);

Solution 3 - Android

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.

Solution 4 - Android

Just try out this way:

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

Solution 5 - Android

Using Kotlin, you can do this:

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

Solution 6 - Android

For kotlin this works for me

yourimagebuttonID.setImageResource(R.drawable.ic_check_black_24dp)

Solution 7 - Android

In Kotlin you can use this code:

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

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

Solution 8 - Android

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionnewbieView Question on Stackoverflow
Solution 1 - AndroidBudiusView Answer on Stackoverflow
Solution 2 - AndroidMuraliGanesanView Answer on Stackoverflow
Solution 3 - AndroidziniestroView Answer on Stackoverflow
Solution 4 - AndroidGrIsHuView Answer on Stackoverflow
Solution 5 - AndroidHasan A YousefView Answer on Stackoverflow
Solution 6 - AndroidJimale AbdiView Answer on Stackoverflow
Solution 7 - AndroidGoldCatView Answer on Stackoverflow
Solution 8 - Androidf.oldView Answer on Stackoverflow