2012-03-30 122 views
23

我有這個組件:垂直居中TextView的文本相對於它的drawableLeft圖像

<TextView 
    android:id="@+id/item_name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:drawableLeft="@drawable/icon" /> 

在drawableLeft屬性的圖像比文字的字體比較大,所以我希望文字相垂直居中到圖像。我怎樣才能得到這個效果?

回答

79

你想要「引力」注意這不會與佈局引力混淆,佈局引力移動整個文本視圖,而重力移動文本視圖內的文本。

<TextView 
    android:id="@+id/item_name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:drawableLeft="@drawable/icon" 
    android:gravity="center_vertical" /> 
+1

謝謝,我以前試過layout_gravity,它沒有工作,不知道差異,但現在沒關係。 – user940016 2012-03-31 05:51:45

+0

非常感謝你...它也適用於我 – xFighter 2016-12-24 10:46:18

0

您應該將兩個DrawableTextView一個RelativeLayout內使用layout_alignBaseline屬性您TextView。您TextView

你也可以只放置兩個項目,DrawableTextViewLinearLayouthorizontal方向和layout_height="wrap_content"和使用layout_gravity="center_vertical"

+0

使用android:重力將是一個更乾淨和更快的方法,雖然這會給你更多的靈活性來調整圖像上飛等。 – Merkidemis 2012-06-29 20:34:15

+0

感謝您的,我不想使用drawableLeft,因爲圖標很小,我想要一個ImageButton。我一直在討論利潤率,直到我找到答案。 Upvoted。 – span 2012-08-12 22:36:10

27

除了設置的嚴重性,這也可以在某些情況下,對齊有助於減少對TextView的頂部和底部的墊襯,它可以是不平等的:

android:includeFontPadding="false" 
+6

謝謝,'android:gravity'結合這個解決了我的問題! – joscarsson 2014-09-14 14:38:47

+2

是的,它也幫助我!非常感謝! – 2014-12-10 13:41:49

0

如果你不在乎關於文本口音,試試android:includeFontPadding="false"。這將刪除額外的頂部和底部填充TextView。 至於android:gravity="center_vertical",它對我的​​代碼沒有影響。