Home » Android » android – How to set image size when using setCompoundDrawablesWithIntrinsicBounds()?

android – How to set image size when using setCompoundDrawablesWithIntrinsicBounds()?

Posted by: admin June 15, 2020 Leave a comment


I need to set image above text in tabs in Tab Layout. So I set image in my TextView using setCompoundDrawablesWithIntrinsicBounds but I don’t know how give size for my image.

I tried to give size like this:

Drawable dr = ContextCompat.getDrawable(MainActivity.this, R.drawable.mobile_icon);
    Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
    mobile_drawable = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 50, 50, true));

    TextView tabOne = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);

But it gives me this error:

Cannot resolve method setCompoundDrawablesWithIntrinsicBounds(int,android.graphics.drawable.Drawable,int,int);

I also tried


but it also not working?

So how to give image size when using setCompoundDrawablesWithIntrinsicBounds???

How to&Answers:

Check this out

Drawable img = ContextCompat.getDrawable(MainActivity.this,R.drawable.btn_img);
// You need to setBounds before setCompoundDrawables , or it couldn't display
img.setBounds(0, 0, img.getMinimumWidth(), img.getMinimumHeight());
btn.setCompoundDrawables(img, null, null, null); 

Calculate image size when using setCompoundDrawables for EditText


The accepted answer is outdated and buggy…

You cannot set drawable size using setCompoundDrawablesWithIntrinsicBounds

Instead, you need to set it using setCompoundDrawables like this

Drawable img = ContextCompat.getDrawable(yourContext, R.drawable.yourImgId);
img.setBounds(0, 0, yourSize, yourSize);
yourTextView.setCompoundDrawables(img, null, null, null);


What worked for me in VS.Xamarin

text = parentView.FindViewById<EditText>(Resource.Id.text);
Drawable img = ContextCompat.getDrawable(context, R.id.resource_id);
img.SetBounds(0, 0, 20, 20); 
text.SetCompoundDrawables(img, null, null, null);