为什么这个布局不居中?

Why is not center this layout?

这是我构建的操作栏布局:

<LinearLayout
        android:orientation="horizontal"
        android:id="@+id/Layout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/button_blue_no_border">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:background="@drawable/white"
                />
            <TextView
                android:id="@+id/textActionBar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="@color/white"
                android:text="@string/app_name"
                android:textStyle="bold"/>
            </LinearLayout>

    </LinearLayout>

不幸的是,图像在左侧,文本视图靠近图像。 我希望第二个线性布局在第一个布局中居中。我该怎么办?

android:layout_centerHorizontal="true" 仅适用于 RelativeLayouts。

您可以尝试将父布局设为 RelativeLayout。

或者,添加 layout_gravity="center_horizontal" 作为子布局的属性。

或者,添加 gravity="center_horizontal" 作为父布局的属性。

android:layout_centerHorizontal 仅适用于 RelativeLayout。
在 LinearLayout 中你应该使用 gravity

<RelativeLayout
        android:orientation="horizontal"
        android:id="@+id/Layout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/button_blue_no_border">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:background="@drawable/white"
                />
            <TextView
                android:id="@+id/textActionBar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="@color/white"
                android:text="@string/app_name"
                android:textStyle="bold"/>
            </LinearLayout>

 </RelativeLayout>

或者看这里How to align LinearLayout at the center of its parent?

只需添加

android:gravity="center_horizontal"

到您的父布局,您是金色的...或钻石的。随便。

在您的子布局中分配 android:layout_gravity="center_horizontal",并在您的子布局中分配 imageView 和 textView android:layout_weight="1" 属性 以等分 space。

试试这个代码。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/Layout1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_margin="10dp"
                android:orientation="horizontal" >

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@drawable/ic_launcher" />

                <TextView
                    android:id="@+id/textActionBar"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_weight="1"
                    android:text="Hello"
                    android:textStyle="bold" />
            </LinearLayout>


        </LinearLayout>

在 TextView 中,这一行 android:layout_gravity="center_vertical" 定义了 textView 也是图像高度的中心。所以这取决于你,在你的应用程序中是否需要这些东西。