114

我有以下基本布局

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/title_bar_background">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:padding="10dp"
        android:text="HELLO WORLD" />

    </LinearLayout>
<LinearLayout>

似乎 xml 是正确的,但文本向左对齐。textview 占据了父级的整个宽度,并且 textview 设置为居中。不确定是什么问题...

4

5 回答 5

235

发生的事情是,由于 TextView 填充了内部 LinearLayout 的整个宽度,它已经位于布局的水平中心。当您使用android:layout_gravity它时,它会将小部件作为一个整体放置在指定的重力中。您真正想要做的不是将整个小部件中心放置在中心,而是将内容放在中心,这可以完成android:gravity="center_horizontal"并且android:layout_gravity可以删除属性。

于 2011-10-04T17:54:56.037 回答
25

如果你设置<TextView>在中心<Linearlayout>然后首先android:layout_width="fill_parent"强制
不需要使用任何其他重力

    <LinearLayout
            android:layout_toRightOf="@+id/linear_profile" 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:orientation="vertical"
            android:gravity="center_horizontal">
            <TextView 
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="It's.hhhhhhhh...."
                android:textColor="@color/Black"

                />
    </LinearLayout>
于 2014-05-06T05:15:24.000 回答
24
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bar_background">

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:padding="10dp"
    android:text="HELLO WORLD" />

</LinearLayout>

于 2011-10-04T17:49:46.577 回答
16

使用android:gravity="center"inTextView而不是layout_gravity.

于 2011-10-04T17:47:41.777 回答
3

只需使用:android:layout_centerHorizo​​ntal="true"

它将把整个文本视图放在中心

于 2018-06-24T15:07:19.590 回答