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,就像在第二个代码段中一样