在我调用setCompoundDrawables方法后,复合Drawable没有显示。
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
任何想法吗?
在我调用setCompoundDrawables方法后,复合Drawable没有显示。
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
任何想法吗?
当前回答
示例设置在顶部:
view.setCompoundDrawablesWithIntrinsicBounds(
null,
getResources().getDrawable(R.drawable.some_img),
null,
null
);
参数顺序:(左,上,右,下)
其他回答
在API 22中已弃用。
这段代码对我很有用:
Drawable drawable = ResourcesCompat.getDrawable(getResources(),R.drawable.wen, null);
drawable.setBounds(0, 0, drawable.getMinimumWidth(),
drawable.getMinimumHeight());
tv.setCompoundDrawables(drawable, null, null, null);
在Kotlin中使用Databinding
binding.tvTime.setCompoundDrawablesWithIntrinsicBounds(
ResourcesCompat.getDrawable(resources, android.R.drawable.ic_menu_recent_history, null),
null,null,null)
哪里tvTime是textView和位置(右,上,左,下),更多关于绑定在这里 https://stackoverflow.com/a/72360048/12272687
图像没有显示,因为你没有指定边界,所以你有两个选项。
1号方法
使用setcompounddrawableswithintrinsic icbounds方法,如下所示
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn. setCompoundDrawablesWithIntrinsicBounds(myDrawable, null, null, null);
2方法
你可以在应用到TextView之前对可绘制对象应用边界,如下所示
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
myDrawable.setBounds( 0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());
btn.setCompoundDrawables(myDrawable, null, null, null);
就是这样。
再简单一点:
Drawable image = context.getResources().getDrawable(R.drawable.ic_action );
image.setBounds( 0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight() );
button.setCompoundDrawables( image, null, null, null );
在芬兰湾的科特林:
1)设置可绘制:
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)设置TextView:
textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
or
button.setCompoundDrawables(null, drawable, null, null)