将TextView的文本相对于其drawableLeft图像垂直居中

时间:2012-03-30 19:58:55

标签: android android-layout android-widget

我有这个组件:

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

drawableLeft属性中的图像大于文本的字体,因此我希望文本相对于图像垂直居中。我怎样才能得到这种效果?

4 个答案:

答案 0 :(得分:93)

你想要“重力”注意这不要与布局重力混淆,布局重力会移动整个文本视图,而重力会在文本视图中移动文本。

<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 :(得分:44)

除了设置引力之外,这还可以通过减少textview顶部和底部的填充来帮助在某些情况下进行对齐,这可能是不相等的:

android:includeFontPadding="false"

答案 2 :(得分:2)

如果您不关心文字重音,请尝试android:includeFontPadding="false"。这会删除TextView的额外顶部和底部填充。 至于android:gravity="center_vertical",它对我的​​代码没有影响。

答案 3 :(得分:0)

您应将DrawableTextView放在RelativeLayout内并使用TextView上的layout_alignBaseline属性。

您也可以将DrawableTextView两个项目放在LinearLayout horizontal方向和layout_height="wrap_content"内并使用layout_gravity="center_vertical"TextView上。