我有这个组件:
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/icon" />
drawableLeft属性中的图片比文本字体要大,因此我希望文本在垂直方向上与图片居中对齐。如何实现这一效果?
我有这个组件:
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/icon" />
drawableLeft属性中的图片比文本字体要大,因此我希望文本在垂直方向上与图片居中对齐。如何实现这一效果?
你想要的是“gravity”,注意这与布局重力(layout gravity)不同,布局重力会移动整个文本视图,而重力则是移动文本视图内的文本。
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/icon"
android:gravity="center_vertical" />
除了设置重力外,这也可以通过减少TextView顶部和底部的填充来帮助一些情况下的对齐,从而使文本视图更加对称:
android:includeFontPadding="false"
android:gravity
与此结合使用解决了我的问题! - joscarsson如果你不在意文本重音,可以尝试使用android:includeFontPadding="false"
。这将去除TextView
的额外顶部和底部填充。
至于android:gravity="center_vertical"
,它对我的代码没有影响。
你应该将Drawable
和TextView
都放在一个RelativeLayout
中,并在你的TextView
上使用layout_alignBaseline
属性。
你也可以将这两个元素,Drawable
和TextView
,放在一个LinearLayout
中,设置horizontal
方向、layout_height="wrap_content"
,并在你的TextView
上使用layout_gravity="center_vertical"
属性。