2012-10-07 61 views
25

我有以下TextView约束drawableLeft和drawableRight的高度的TextView的高度

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

,结果是这样的:

我如何加载圈子绘制约束比例使它的高度与文本的高度相匹配?

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

回答

22

为了使loading小才使图像更小。

或使用RelativeLayout并将加载置于ImageView并对其进行缩放。

或者您也可以在绘图资源,并使用android:drawablePadding文本(或setCompoundDrawablePadding())之间添加填充物:

android:drawablePadding="3dp" 
+0

“让图像变小” - 帮助我。谢谢。 – offset

+0

@offset调整图像大小(Photoshop,GIMP,在线工具等...) – JafarKhQ

+1

这就是我所说的,我减少了图像,它解决了我的问题。 – offset

0

你只需要声明两个独立意见imageview的并且TextView的,并设置它们进行相应

+1

是的,但有时drawable需要在TextView中为点击监听器(如日历选取器图标)。所以单独设置它们会是一个问题。 –

+0

将它们放在LinearLayout中并在布局上设置点击。问题解决了! – noob

0

更好的解决方案将建立在绘制文件夹中的XML和图像添加到该XML,并保持scaleType为“fitXY”。现在你可以把这个XML作为drawableLeft。

+1

您可以添加更多详细信息吗?也许一个示例XML文件? –

+1

我试过了,它不起作用。您无法在可绘制文件夹中通过XML设置的大小。 scaleType =“fitXY”适用于ImageViews不可绘制。我使用缩放图像并将其放入各种drawable-mdpi,drawable-xhdpi文件夹中。 – Deemoe

7

我想我找到了解决办法,但有点晚

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

该代码中的scaleWidth和scaleHeight是什么? – Sly

1

拉维的解决方案为我,但在某些设备上绘制正在消失。通过消除缩放来解决这个问题。

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