我对 Android SDK 比较陌生,并且正在我的 Activity UI 上使用 TextView 和其他组件。当我将宽度设置为
wrap_content
并使用 layout_gravity
时,我可以将 TextView 置于父容器中。
但是,我现在需要为 TextView 提供一个沿着父级宽度完全拉伸的背景,因此我将宽度设置为
match_parent
。一旦我这样做,layout_gravity
和textAlignment="center"
都无法将文本在视图中居中。这是我正在使用的代码:
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="@string/trackName"
android:textColor="#ffffff"
android:layout_gravity="center"
android:textSize="28sp"
android:paddingTop="7dp"
android:paddingLeft="20dp"
android:background="#99000000" />
这就是活动 UI 现在的样子:
如何解决此问题并将文本与 TextView 控件的中心对齐?
您应该使用
android:gravity
。正如文档所说:
gravity 指定对象应如何在 X 轴和 Y 轴上将其内容定位在其自身边界内。
layout_gravity 子级提供给父级的标准重力常数。定义子视图在其封闭布局内的 X 轴和 Y 轴上的定位方式。
使用
gravity
代替 layout_gravity
android:gravity
设置其使用的视图内容的重力,android:layout_gravity
设置其父视图或布局的重力。
尝试这个应该可以解决您的问题。
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="@string/trackName"
android:textColor="#ffffff"
android:gravity="center"
android:textSize="28sp"
android:paddingTop="7dp"
android:paddingLeft="20dp"
android:background="#99000000" />
android:gravity="center_horizontal"
重力和layout_gravity之间的区别:
layout_gravity 表示宽体在其布局中的重力。您已使用宽度作为 match_parent。所以你的文本视图已经占据了所有的空间。
重力是指该视图内容的重力。即文本视图中文本的重力。你必须将该文本放置在中心,而不是文本视图。