2012-10-07 99 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);