多个布局上的setLayoutParams

时间:2014-03-02 15:24:30

标签: java android android-layout

我需要以编程方式更改布局的值topMargin。我尝试了以下方法:

    android.widget.LinearLayout.LayoutParams lp_ll = new LinearLayout.LayoutParams(
    spaceBtnWidth, buttonHeight);
    lp_ll.height = LayoutParams.WRAP_CONTENT;
    lp_ll.width = LayoutParams.WRAP_CONTENT;
    lp_ll.gravity = Gravity.CENTER_HORIZONTAL;
    lp_ll.topMargin = rowDistance;

    ll3.setLayoutParams(lp_ll);
    ll4.setLayoutParams(lp_ll);
    ll5.setLayoutParams(lp_ll);

我希望我的所有3个布局ll3,ll4和ll5都使用lp_ll中的相同属性。问题是现在只有我的第一个布局ll3才能接受它。其他两个不改变。我甚至尝试了不同的顺序,并把我设置ll4的行放在ll3和ll5行之上。无论如何ll3正在设置,其他两个不会改变它们的属性。 感谢

2 个答案:

答案 0 :(得分:0)

为每个布局创建lp_ll

的副本
ll4.setLayoutParams(new LinearLayout.LayoutParams(lp_ll));
ll5.setLayoutParams(new LinearLayout.LayoutParams(lp_ll));

答案 1 :(得分:0)

您可以像这样编辑代码:

android.widget.LinearLayout.LayoutParams lp_ll = new LinearLayout.LayoutParams(
spaceBtnWidth, buttonHeight);
lp_ll.height = LayoutParams.WRAP_CONTENT;
lp_ll.width = LayoutParams.WRAP_CONTENT;
lp_ll.gravity = Gravity.CENTER_HORIZONTAL;
lp_ll.topMargin = rowDistance;

ll3.setLayoutParams(lp_ll);
ll4.setLayoutParams(ll3.getLayoutParams());
ll5.setLayoutParams(ll3.getLayoutParams());

它仍然会这样做,我希望这有帮助。