当width设置为'match_parent'时,无法在TextView中居中文本

时间:2014-11-16 16:01:47

标签: android layout textview text-align

我是Android SDK的新手,我正在使用TextView和我的活动UI上的其他组件。当我将宽度设置为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 个答案:

答案 0 :(得分:7)

您应该使用android:gravity。正如文档所说:

  

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

     

layout_gravity儿童向其父母提供的标准重力常数。定义子视图在其封闭布局中在X轴和Y轴上的定位方式。

答案 1 :(得分: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" />

答案 2 :(得分:1)

android:gravity="center_horizontal"

重力和layout_gravity之间的区别:

layout_gravity表示布局中广角的重力。你使用width作为match_parent。所以你的textview已经占据了所有的空间。

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