以编程方式设置布局权重的正确方法是什么



我看到这里几乎每个示例都说这是从代码中设置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 orientationLinearLayout,您的layout_height必须0dp

在你拥有的第一个代码片段中

LinearLayout.LayoutParams.WRAP_CONTENT

对于你的height这是错误的。它应该为 0,就像第二个代码片段一样。

相关内容

最新更新