【发布时间】:2019-05-24 18:43:28
【问题描述】:
我在使用 Android 中的 LinearLayout 和权重时遇到问题。我想要一个水平的 LinearLayout 来容纳 2 个垂直的 LinearLayouts,它们由一个具有 9 个补丁背景的 View 分隔,作为 2 个垂直的 LinearLayouts 之间的分隔符。
像这样:(外框是外LinearLayout,中间双线是我的9个补丁分隔符。)
----------------------------
| one || three |
| two || four |
----------------------------
持续发生的是第一个内部 LinearLayout 以最小宽度显示其内容(好像它的宽度是 wrap_content),然后剩余空间被拉伸以填充其余部分的分隔符视图占用外部线性布局。第二个内部 LinearLayout 根本不显示。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_weight="1" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="one" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="two" />
</LinearLayout>
<View
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@drawable/divider_vertical"
android:layout_weight="0" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_weight="1" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="three" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="four" />
</LinearLayout>
</LinearLayout>
我在这里做错了什么?我一生都无法弄清楚为什么中间 View 占用了所有空间,而没有为第二个内部 LinearLayout 留下任何空间。
如果我为 9-patch 视图指定特定的 px 或 dp 宽度,我可以让它工作,但我真的希望它可以工作而不必指定这个宽度。这样,如果我决定更改我的 9-patch 可绘制对象,我就不必手动更新宽度。
【问题讨论】:
-
你有解决办法还是还是同样的问题
-
您是否尝试过为分隔线视图设置一个实际宽度?说 10dp 之类的?
-
是的。给分隔线一个实际的宽度可以解决这个问题,但我正在寻找一个不涉及这个的解决方案。查看我对原始帖子的更新。
标签: android android-layout android-linearlayout android-view android-layout-weight