设置 child 的百分比宽度为 parent
Set child to have a percentage width of a parent
有 3 个 LinearLayout
个方向为 horizontal
的容器。前两个LinearLayout
各有4TextView
children。第三个只有3个。我已经为所有TextView
children创建并分配了样式。样式片段:
<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 C1
、C2
和 C3
到 0.25
0.25
和 0.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
的总和
有 3 个 LinearLayout
个方向为 horizontal
的容器。前两个LinearLayout
各有4TextView
children。第三个只有3个。我已经为所有TextView
children创建并分配了样式。样式片段:
<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 C1
、C2
和 C3
到 0.25
0.25
和 0.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