我有这个组件:
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/icon" />
drawableLeft属性中的图像大于文本的字体,因此我希望文本相对于图像垂直居中。我怎样才能得到这种效果?
答案 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)
您应将Drawable
和TextView
放在RelativeLayout
内并使用TextView
上的layout_alignBaseline
属性。
您也可以将Drawable
和TextView
两个项目放在LinearLayout
horizontal
方向和layout_height="wrap_content"
内并使用layout_gravity="center_vertical"
在TextView
上。