我看到这里几乎每个示例都说这是从代码中设置layout_weight
的方法:
linearLayoutView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT,
1f));
但是,这在我的情况下不起作用。在我的情况下唯一有效的是:
linearLayoutView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
0,
1f));
对应于 XML 代码
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
为什么会这样?我的解决方案有误吗?
正如你所说
对应于 XML 代码
您的XML是正确的,由于layout_height
,您拥有的第二个代码片段也是如此。在这种情况下,您的LinearLayout
必须具有vertical orientation
。为了使weight
正常工作,您的layout_width
必须0dp
,对于具有vertical orientation
的LinearLayout
,您的layout_height
必须0dp
。
在你拥有的第一个代码片段中
LinearLayout.LayoutParams.WRAP_CONTENT
对于你的height
这是错误的。它应该为 0,就像第二个代码片段一样。