【问题标题】:How to create two LinearLayout with equal width programmatically?如何以编程方式创建两个等宽的 LinearLayout?
【发布时间】:2016-02-18 10:00:45
【问题描述】:

我正在尝试以编程方式创建两个宽度相等的LinearLayout

mGroupLayout.setOrientation(HORIZONTAL);
mGroupLayout.setWeightSum(2f);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        0,
        LinearLayout.LayoutParams.WRAP_CONTENT
        );
params.weight = 1.0f;


leftLayout = new LinearLayout(getContext());
leftLayout.setOrientation(VERTICAL);
leftLayout.setLayoutParams(params);


mGroupLayout.addView(
        leftLayout,
        params
        );

rightLayout = new LinearLayout(getContext());
rightLayout.setOrientation(VERTICAL);
rightLayout.setLayoutParams(params);

mGroupLayout.addView(
        rightLayout,
        params
        );

但我所有的线性布局都不可见(它们的宽度为 0)。 我该怎么做?

【问题讨论】:

  • LinearLayout.LayoutParams.WRAP_CONTENT 匹配父级,更改两个参数以匹配父级

标签: android android-linearlayout android-layoutparams


【解决方案1】:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        0,
        LinearLayout.LayoutParams.MATCH_PARENT,1
        );
FirstLinearLayout.setLayoutParams(params );
SecondLinearLayout.setLayoutParams(params );

1 is the Weight of each layout.

【讨论】:

  • 我尝试在 LayoutParams 的构造函数中设置权重,并尝试使用 params.weight = 1 它不起作用。因此,如果我使用 xml 布局,它会完美运行
【解决方案2】:

试试这个,

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
            0,
            LinearLayout.LayoutParams.MATCH_PARENT,1.0
            );

如果您的 weightsum 为 2,则为 1.0,否则为 0.5

【讨论】:

  • 如果我使用MATCH_PARENT 作为宽度,我的左边LinearLayout 会填满所有空间。并且正确的布局是不可见的
  • 它不应该发生,因为你正在增重
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
相关资源
最近更新 更多