将drawableLeft和drawableRight的高度限制为TextView的高度

时间:2012-10-07 09:46:45

标签: android textview drawable

我有以下TextView

<TextView
    android:drawableLeft="@drawable/loading"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Updating Rates" />

结果如下:

如何按比例加载圆形可绘制约束,使其高度与文本高度相匹配?

另外,如果可能的话,我想在文本和图像之间添加一些间距。

5 个答案:

答案 0 :(得分:22)

要使loading更小,只需缩小图像。

或者使用RelativeLayout并将加载放入ImageView并进行缩放。

或者您可以使用android:drawablePadding(或setCompoundDrawablePadding())在drawable和文本之间添加填充:

android:drawablePadding="3dp"

答案 1 :(得分:8)

我想我找到了解决方案,但有点晚了

Drawable drawable = getResources().getDrawable(R.drawable.s_vit);
drawable.setBounds(0, 0, (int)(drawable.getIntrinsicWidth()*0.5),(int)(drawable.getIntrinsicHeight()*0.5));
ScaleDrawable sd = new ScaleDrawable(drawable, 0, scaleWidth, scaleHeight);
Button btn = findViewbyId(R.id.yourbtnID);
btn.setCompoundDrawables(sd.getDrawable(), null, null, null); 

答案 2 :(得分:1)

拉维的解决方案对我有用,但在一些设备上,可绘制的消失了。通过删除缩放来解决此问题。

    int bound = (int) (drawable.getIntrinsicWidth() * 0.5);
    drawable.setBounds(0, 0, bound, bound);
    b.setCompoundDrawables(drawable, null, null, null);

答案 3 :(得分:0)

更好的解决方案是在可绘制文件夹中创建XML并将图像添加到此XML,并将scaleType维护为“fitXY”。现在,您可以将此XML作为drawableLeft。

答案 4 :(得分:-1)

您只需要声明两个单独的视图imageview和textview,并相应地设置它们