设置 child 的百分比宽度为 parent

Set child to have a percentage width of a parent

有 3 个 LinearLayout 个方向为 horizontal 的容器。前两个LinearLayout各有4TextViewchildren。第三个只有3个。我已经为所有TextViewchildren创建并分配了样式。样式片段:

<item name="android:layout_width">0dp</item>
<item name="android:layout_weight">.25</item>

使用这种样式,前两行对齐得很好,每行 child TextView 使用 parent 宽度的四分之一。但是,第三个 LinearLayout 中的 TextView 个组件每个使用 parent 宽度的三分之一。

所以组件对齐是这样的:

A1xxxx A2xxxx A3xxxx A4xxxx
B1xxxx B2xxxx B3xxxx B4xxxx
  C1xxxx  C2xxxx  C3xxxx

而不是这样(如预期的那样):

A1xxxx A2xxxx A3xxxx A4xxxx
B1xxxx B2xxxx B3xxxx B4xxxx
C1xxxx C2xxxx C3xxxx

解法: 我已经尝试为第三行中的每个 child 手动更改 android:layout_weight 属性,如果我设置 layout_weight of C1C2C30.25 0.250.5 我得到了所需的对齐方式。

问题: 我做错了什么,因为我最初的解决方案是让每个 TextView 都有 属性 <item name="android:layout_weight">.25</item> 没有按预期工作?

试试这个...

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="xhajxnuwxnu"/>
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="xhajxnuwxnu"/>
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="xhajxnuwxnu"/>
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="xhajxnuwxnu"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="xhajxnuwxnu"/>
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="xhajxnuwxnu"/>
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="xhajxnuwxnu"/>
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="xhajxnuwxnu"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="xhajxnuwxnu"/>
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="xhajxnuwxnu"/>
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="5"
                android:text="xhajxnuwxnu"/>
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="5"
                />
        </LinearLayout>
    </LinearLayout>

您没有做错任何事,您得到的结果也在意料之中。

你只需要把android:weightSum加1到第三个LinearLayout。因为,默认情况下 android:weightSum 的值设置为 children 的 layout_weight

的总和