After I call the setCompoundDrawables method, the compound Drawable is not shown..
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
Any thoughts?
After I call the setCompoundDrawables method, the compound Drawable is not shown..
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
Any thoughts?
The Image is not shown as you didn't specify the bounds, so you have 2 options here.
1st Method
Use setCompoundDrawablesWithIntrinsicBounds method, as shown below
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn. setCompoundDrawablesWithIntrinsicBounds(myDrawable, null, null, null);
2nd Method
You can apply bounds to the drawable before applying to the TextView, as shown below
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
myDrawable.setBounds( 0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());
btn.setCompoundDrawables(myDrawable, null, null, null);
That's it.
In Kotlin:
1) Set drawable:
val drawable = ContextCompat.getDrawable(context!!,R.drawable.ic_image)?.apply {
setBounds(0, 0, intrinsicWidth, intrinsicHeight)
}
or
val drawable = ResourcesCompat.getDrawable(resources, R.drawable.ic_image, null)?.apply {
setBounds(0, 0, minimumWidth, minimumHeight)
}
2) Set TextView:
textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
or
button.setCompoundDrawables(null, drawable, null, null)
Example with Kotlin:
val myView = layoutInflater.inflate(R.layout.my_view, null) as TextView
myView.setCompoundDrawablesWithIntrinsicBounds(0, myDrawable, 0, 0)
In Kotlin with Databinding
binding.tvTime.setCompoundDrawablesWithIntrinsicBounds(
ResourcesCompat.getDrawable(resources, android.R.drawable.ic_menu_recent_history, null),
null,null,null)
where tvTime is textView and Position (Rigth,Top,Left,Bottom), More about binding is here
https://stackoverflow.com/a/72360048/12272687