Android 居中文本视图';s文本相对于其可绘制左图像的垂直方向

Android 居中文本视图';s文本相对于其可绘制左图像的垂直方向,android,android-layout,android-widget,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属性中的图像大于文本的字体,因此我希望文本相对于图像垂直居中。如何获得这种效果?您想要“重力”注意,这不能

我有这个部分:

<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:drawableStart="@drawable/icon"
    android:gravity="center_vertical" />

您应该将
可绘制
文本视图
放在
相对视图
中,并使用
文本视图
上的属性


您还可以将两个项目,
draawable
TextView
放置在
LinearLayout
水平方向和
layout\u height=“wrap\u content”
LinearLayout\u-gravity=“center\u-vertical”
内,并在
TextView
上使用
layout\u-gravity=“center\u-vertical”
,在某些情况下,这还可以通过减少textview顶部和底部的填充来帮助对齐,这可能是不相等的:

android:includeFontPadding="false"

如果您不关心文本重音,只需尝试
android:includeFontPadding=“false”
。这将删除
TextView
的额外顶部和底部填充。
至于
android:gravity=“center\u vertical”
,它对我的代码没有影响。

谢谢,我以前尝试过布局重力,但它不起作用,不知道有什么区别,但现在没问题。使用android:gravity将是一种更干净、更快的方法,尽管这会让你更灵活地动态调整图像大小,等等。谢谢这个,我不想使用drawableLeft,因为图标太小了,我想要一个ImageButton。在我找到你的答案之前,我一直在胡闹。向上投票。谢谢,
android:gravity
与此相结合为我解决了这个问题!是的,这对我也有帮助!非常感谢你!这救了我!谢谢