Android - 在LinearLayout中水平居中TextView

Jak*_*son 105 android android-layout android-linearlayout layout-gravity

我有以下基本布局

<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>
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*n S 217

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

  • 如果我理解正确,他可以将"android:layout_width ="fill_parent"更改为"wrap_content",然后使用android:layout_gravity ="center_horizo​​ntal".我是对的吗? (3认同)
  • 不要忘记`android:layout_width="match_parent"` (2认同)

Joe*_*ouz 22

<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>
Run Code Online (Sandbox Code Playgroud)


pat*_*135 21

如果你设置<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>
Run Code Online (Sandbox Code Playgroud)


Bla*_*elt 16

使用android:gravity="center"TextView代替layout_gravity.