调用setCompoundDrawables()不会显示Compound Drawable

在我调用setCompoundDrawables方法后,复合Drawable不显示..

 Drawable myDrawable = getResources().getDrawable(R.drawable.btn); btn.setCompoundDrawables(myDrawable, null, null, null); 

有什么想法吗?

我需要使用setCompoundDrawablesWithIntrinsicBounds

使用这个(我testing)。 它运作良好

 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 ); 

图像是空白的,因为它没有指定边界。 您可以使用setCompoundDrawables()但在指定图像的边界之前,使用Drawable.setBounds()方法

再简单一点:

 Drawable image = context.getResources().getDrawable(R.drawable.ic_action ); image.setBounds( 0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight() ); button.setCompoundDrawables( image, 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);