当宽度设置为“match_parent”时,无法使 TextView 中的文本居中

问题描述 投票:0回答:3

我对 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 现在的样子:

enter image description here

如何解决此问题并将文本与 TextView 控件的中心对齐?

android layout textview text-align
3个回答
7
投票

您应该使用

android:gravity
。正如文档所说:

gravity 指定对象应如何在 X 轴和 Y 轴上将其内容定位在其自身边界内。

layout_gravity 子级提供给父级的标准重力常数。定义子视图在其封闭布局内的 X 轴和 Y 轴上的定位方式。


3
投票

使用

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" />

1
投票
android:gravity="center_horizontal"

重力和layout_gravity之间的区别:

layout_gravity 表示宽体在其布局中的重力。您已使用宽度作为 match_parent。所以你的文本视图已经占据了所有的空间。

重力是指该视图内容的重力。即文本视图中文本的重力。你必须将该文本放置在中心,而不是文本视图。

© www.soinside.com 2019 - 2024. All rights reserved.