当将宽度设置为“match_parent”时,无法将文本居中显示在TextView中。

5

我对Android SDK相对较新,在我的活动UI中使用TextView和其他组件。当我将宽度设置为wrap_content并使用layout_gravity时,我可以将TextView居中在父容器中。但是,现在我需要给TextView一个完全沿父容器宽度伸展的背景,所以我将宽度设置为match_parent。一旦我这样做了,layout_gravitytextAlignment="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" />

这是当前活动界面的样子:

enter image description here

我该如何解决这个问题并将我的文本对齐到TextView控件的中心?请帮忙!


3
尝试使用 android:gravity: 而不是 android:layout_gravity: - Emmanuel
3个回答

7
你应该使用android:gravity。文档中说:

gravity 指定对象在其自身边界内如何定位其内容,包括 X 和 Y 轴。

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


3

使用 gravity 代替 layout_gravity

它们之间的区别

android:gravity 设置View的内容的对齐方式,而android:layout_gravity设置View或布局在其父布局中的对齐方式。

尝试这样做应该可以解决您的问题。

<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。因此,您的文本视图已经占用了所有空间。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接