Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set ImageButton property of app:srcCompat="@drawable/pic" programmatically?

How to set the ImageButton property of

app:srcCompat="@drawable/pic"

programmatically?

Something like myImageButton.setBackgroundResource(R.drawable.eng2); but the property of app:srcCompat.

like image 813
Isaac Darlong Avatar asked Jul 05 '16 21:07

Isaac Darlong


4 Answers

You need to use setImageResource() method.

imageButton.setImageResource(R.drawable.eng2);

like image 73
Prerak Sola Avatar answered Nov 14 '22 19:11

Prerak Sola


First, ensure you are dealing with AppCompatImageView, not regular ImageView:

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

and then you can do:

iv.setImageResource(R.drawable.pic);

See other public methods in docs.

like image 37
Marcin Orlowski Avatar answered Nov 14 '22 20:11

Marcin Orlowski


Using setImageResource() should fetch its resource in a backwards-compatible manner without any further effort required.

However if you are using setImageDrawable(), the ImageView/ImageButton will not help with any backwards compat and it's up to you to supply a backward-compat drawable, which is important for eg. if using VectorDrawables. The following will load and set a drawable in such a way:

val drawable = AppCompatResources.getDrawable(context, resourceId)
image.setImageDrawable(drawable)
like image 3
Tom Avatar answered Nov 14 '22 18:11

Tom


None, of the provided solutions worked for me. I was using an ImageView. Finally, I found out that using setBackgroundResource() works for me.

view.setBackgroundResource(R.drawable.ic_star_black_18dp)
like image 1
MachineLearner Avatar answered Nov 14 '22 19:11

MachineLearner