如何将LinearLayout对齐其父级的中心?

Vio*_*ffe 75 android android-ui android-layout

我在SO看了很多类似的问题,但没有任何帮助.我有一个不同嵌套布局的层次结构,都有android:layout_width="fill_parent",并且最里面的布局有android:layout_width="wrap_content- 我需要在中心(水平)对齐它.我怎么做?

更新::我找到了问题的原因 - 如果我将内部LinearLayout放入RelativeLayout android:layout_width="fill_parent",它仍然包含它的内容.然而,TableRow确实填满了屏幕.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
            <TableRow >
            <LinearLayout 
            android:orientation="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">
                    <TextView
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:text="1"
                    android:textAppearance="?android:attr/textAppearanceLarge" />

                     <TextView
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:text="2"
                    android:textAppearance="?android:attr/textAppearanceLarge" />
             </LinearLayout>
           </TableRow>
        </TableLayout>
    </FrameLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

jks*_*der 213

这两个属性通常是混淆的:

  • android:gravity 设置它所使用的View内容的重力.
  • android:layout_gravity设置视图或布局相对于其父级的重力.

因此要么放在android:gravity="center"父级android:layout_gravity="center"上,要么放在LinearLayout本身上.

我已经把自己混淆了很多次,并想知道为什么事情没有正确对中......

  • 我已经为包含 TextViews 的布局尝试了 `android:layout_gravity="center"` - 没有帮助,它仍然左对齐。还尝试将此布局的宽度设置为 `wrap` 和 `fill` - 没有区别。 (2认同)

Lak*_*nan 14

请在线性布局中尝试此操作

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
Run Code Online (Sandbox Code Playgroud)

  • 这些参数用于RelativeLayout (2认同)
  • 这些不是线性布局参数 (2认同)

Yas*_*mar 10

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <LinearLayout 
            android:orientation="horizontal"
            android:layout_centerHorizontal="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <TextView
                 android:layout_height="wrap_content"
                 android:layout_width="wrap_content"
                 android:text="1"
                 android:textAppearance="?android:attr/textAppearanceLarge" />

           <TextView
                 android:layout_height="wrap_content"
                 android:layout_width="wrap_content"
                 android:text="2"
                 android:textAppearance="?android:attr/textAppearanceLarge" />
    </LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

考虑在LinearLayout上包装relativeLayout.android:layout_centerHorizontal="true"将视图中心水平放置.


Emm*_*Sys 5

添加layout_gravity="center"或添加"center_horizontal"到父布局.

在旁注中,你的LinearLayout内部TableRow似乎没有必要,因为TableRow它已经是水平的LinearLayout.


Lal*_*Lal 5

如果你的父级是 LinearLayout,你可以添加到它:

android:orientation="vertical"
android:gravity="center"
Run Code Online (Sandbox Code Playgroud)

还有它的孩子

android:gravity="center"
Run Code Online (Sandbox Code Playgroud)

它至少应该水平居中!