环顾四周后,我还没有找到一个与我的问题相符的问题。我的问题是,我有一个ListView,其条目符合以下布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
amdroid:layout_weight="1"
android:orientation="vertical" >
...
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:orientation="vertical" >
...
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
...
</LinearLayout>
</LinearLayout>
我希望这会产生一个条目,其中第一个嵌套布局获得可用宽度的1/4,第二个获得宽度的1/2,第三个获得宽度的1/4。但事实并非如此;相反,每个嵌套布局的宽度由于某种原因而被包装。
有趣的是,如果我在父LinearLayout而不是“match_parent”中指定特定宽度,嵌套布局宽度将遵循预期的权重。例如,以下内容产生预期结果:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="290dp"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
amdroid:layout_weight="1"
android:orientation="vertical" >
...
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:orientation="vertical" >
...
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
...
</LinearLayout>
</LinearLayout>
显然,指定一个特定的宽度会忽略整个重量点。所以我的问题是:当使用“match_parent”时,为什么权重实际上不填充父LinearLayout,如何纠正?
哦,最后一点,当“match_parent”用于父LinearLayout宽度时,Eclipse中的图形布局预览会产生预期的结果。只有在实际设备上模拟或使用时,嵌套LinearLayouts的内容才会被宽度包装。我猜这是由于布局在ListView中的使用,但是谁知道呢?
由于
答案 0 :(得分:2)
我指定了&#34; wrap_content&#34;对于实例化ListView的布局中的ListView宽度。通过指定&#34; match_parent&#34;来修正ListView宽度;生成入口布局的预期结果,而不依赖于硬编码的layout_width。