【问题标题】:"LinearLayout or its RelativeLayout parent is useless" warning“LinearLayout 或其 RelativeLayout 父级无用”警告
【发布时间】:2015-06-28 07:51:54
【问题描述】:

我有以下布局

...
<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight=".8">
        <LinearLayout
            android:layout_width="320dp"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_centerInParent="true"
            android:baselineAligned="false">
            <include layout="@layout/sublayout1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:layout_gravity="center_vertical" />
            <include layout="@layout/sublayout2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1" />
        </LinearLayout>
</RelativeLayout>
...

我不明白为什么会收到警告“此 LinearLayout 布局或其 RelativeLayout 父级可能无用”。

我在布局设计中尝试将 sublayaout1 和 sublayaout2 置于屏幕中间。为此,我需要将 android:layout_centerInParent 属性设置为 true,并且我需要将 RelativeLayout 父级作为容器,因为它位于具有多行的水平 LinearLayout 内。

有没有办法在没有 RelativeLayout 的情况下将 LinearLayout 居中? 谢谢

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    LinearLayout 上使用android:gravity="center"。删除不必要的RelativeLayout。不要与android:layout_gravity 混淆。

    <LinearLayout
        android:layout_width="320dp"
        android:layout_height="0dp"
        android:layout_weight=".8"
        android:orientation="horizontal"
        android:gravity="center"
        android:baselineAligned="false">
        <include layout="@layout/sublayout1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:layout_gravity="center_vertical" />
        <include layout="@layout/sublayout2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    </LinearLayout>
    

    【讨论】:

    • 我做了但结果不一样
    • 注意区别在于RelativeLayout的宽度是整个屏幕的宽度,而LinearLayout的宽度是320dp,小于屏幕的宽度。另请注意,LinearLayout 相对于 RelativeLayout 居中。如果我删除 RelativeLayout 并使用 android:gravity="center",它不会有任何效果,因为宽度固定为 320dp(而不是屏幕宽度)。
    • 同时使用android:gravity="center",这将使LinearLayoutandroid:layout_gravity="center"(或相对布局等效)的子级居中,以使LinearLayout 在其父级中居中。这行得通吗?
    • 成功了!然而,它会触发另一个警告“嵌套权重不利于性能”
    • 这个线性布局的父级是另一个水平线性布局吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多