Imagebutton change programmatically?
AndroidImagebuttonAndroid 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);