如何在android中用weightSum分隔布局?

时间:2016-04-01 18:10:57

标签: android layout android-linearlayout

我似乎在理解weightSum和LayoutWidth时遇到了问题。我的代码如下:

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

    <LinearLayout

        android:background="#cccccc"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView

            android:padding="20sp"
            android:textSize="30sp"
            android:gravity="center_horizontal"
            android:text="Cheapest Fare Option"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />


    </LinearLayout>

    <LinearLayout

        android:background="#666666"
        android:layout_weight="2"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </LinearLayout>



</LinearLayout>

我对此的理解是第一个布局占据空间的1/3,第二个布局占用空间的2/3,但反过来发生,即第一个布局占2/3,第二个布局是拿1/3

为什么会这样?努力理解这一点。

2 个答案:

答案 0 :(得分:0)

<LinearLayout
    android:background="#cccccc"
    android:layout_weight="1"
    android:layout_width="match_parent"
    android:layout_height="0dp">

    <TextView
        android:padding="20sp"
        android:textSize="30sp"
        android:gravity="center_horizontal"
        android:text="Cheapest Fare Option"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


</LinearLayout>

<LinearLayout
    android:background="#666666"
    android:layout_weight="2"
    android:layout_width="match_parent"
    android:layout_height="0dp">
</LinearLayout>

答案 1 :(得分:0)

根据您的android:orientation="vertical",您希望垂直获得此比率,因此android:layout_height属性对于孩子LinearLayout应为0dp。

设置 -

android:layout_height="0dp"

表示内部LinearLayout

或者,如果您想要水平获得比率,请使用android:orientation="horizontal" set -

android:layout_width="0dp"

表示内部LinearLayout

事情是,当你想要达到比率时,你不要设置特定的尺寸(宽度或高度)以匹配父母。而是将其设置为0dp,以便Android可以自动为您处理它。