Android 以编程方式设置布局权重的正确方法是什么?
我看到这里几乎每个示例都说,这是从代码设置Android 以编程方式设置布局权重的正确方法是什么?,android,Android,我看到这里几乎每个示例都说,这是从代码设置layout\u weight的方法: linearLayoutView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT
layout\u 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代码
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
您的xml是正确的,您的第二个代码段也是正确的,因为布局高度
。在这种情况下,线性布局
必须具有垂直方向
。若要使重量
正常工作,您的布局宽度
必须为0dp
,若要使线性布局
具有垂直方向
您的布局高度
必须为0dp
在您拥有的第一个代码段中
LinearLayout.LayoutParams.WRAP_CONTENT
对于你的高度
,这是错误的。它应该是0,就像在第二个代码段中一样