调用setCompoundDrawables
方法后,未显示复合Drawable ..
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
有什么想法吗?
答案 0 :(得分:578)
答案 1 :(得分:62)
使用此(我测试过)。它运作良好
Drawable image = context.getResources().getDrawable( R.drawable.ic_action );
int h = image.getIntrinsicHeight();
int w = image.getIntrinsicWidth();
image.setBounds( 0, 0, w, h );
button.setCompoundDrawables( image, null, null, null );
答案 2 :(得分:45)
图片为空,因为它没有指定的边界。您可以使用setCompoundDrawables()
但在使用Drawable.setBounds()
方法指定图像边界之前
答案 3 :(得分:29)
示例设置到顶部:
view.setCompoundDrawablesWithIntrinsicBounds(
null,
getResources().getDrawable(R.drawable.some_img),
null,
null
);
参数顺序:(左,上,右,下)
答案 4 :(得分:21)
再简单一点:
Drawable image = context.getResources().getDrawable(R.drawable.ic_action );
image.setBounds( 0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight() );
button.setCompoundDrawables( image, null, null, null );
答案 5 :(得分:9)
在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);
答案 6 :(得分:4)
由于未指定边界,因此未显示图像,因此此处有2个选项。
第一种方法
使用setCompoundDrawablesWithIntrinsicBounds
方法,如下所示
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn. setCompoundDrawablesWithIntrinsicBounds(myDrawable, null, null, null);
第二种方法
您可以先将边界应用于可绘制对象,然后再将其应用于TextView,如下所示
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
myDrawable.setBounds( 0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());
btn.setCompoundDrawables(myDrawable, null, null, null);
就是这样。
答案 7 :(得分:2)
答案 8 :(得分:2)
在科特林:
1)设置drawable
:
val drawable = ContextCompat.getDrawable(context!!,R.drawable.ic_image)?.apply {
setBounds(0, 0, intrinsicWidth, intrinsicHeight)
}
或
val drawable = ResourcesCompat.getDrawable(resources, R.drawable.ic_image, null)?.apply {
setBounds(0, 0, minimumWidth, minimumHeight)
}
2)设置TextView
:
textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
或
button.setCompoundDrawables(null, drawable, null, null)
答案 9 :(得分:1)
Kotlin的例子:
<item name="coordinatorLayoutStyle">@style/Widget.Design.CoordinatorLayout</item>