如何通过Android中的代码动态调整Relativelayout中的视图元素?

Wau*_*ugh 4 android

我希望通过代码动态地在相对布局中显示3个相同的复选框.但是我只能在彼此下方显示两个复选框.我在下面给出了我的代码....我无法找出我错在哪里.

我的代码 -

            RelativeLayout layout = new RelativeLayout(this);

    CheckBox cb1 = new CheckBox(this);
    cb1.setId(1);
    cb1.setText("A");

    CheckBox cb2 = new CheckBox(this);
    cb2.setId(2);
    cb2.setText("B");

    CheckBox cb3 = new CheckBox(this);
    cb3.setId(3);
    cb3.setText("C");

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    layout.setLayoutParams(lp);

    layout.addView(cb1);     

    lp.addRule(RelativeLayout.BELOW,cb1.getId());
    cb2.setLayoutParams(lp);        
    layout.addView(cb2);

    lp.addRule(RelativeLayout.BELOW,cb2.getId());
    cb3.setLayoutParams(lp);
    layout.addView(cb3);
Run Code Online (Sandbox Code Playgroud)

提前致谢.

罗汉沃

Dil*_*eet 5

layout.addView(cb1);     

lp.addRule(RelativeLayout.BELOW,cb1.getId());
cb2.setLayoutParams(lp);        
layout.addView(cb2);

lp.addRule(RelativeLayout.BELOW,cb2.getId());
cb3.setLayoutParams(lp);
layout.addView(cb3);
Run Code Online (Sandbox Code Playgroud)

谢谢,这对我帮助很大

我猜你错了,你使用"lp"作为cb2和cb3的布局参数(你不能一次又一次地将相同的规则"RelativeLayout.BELOW"添加到相同的布局参数对象"lp").使用lp表示cb2,lp2表示cb3并像这样创建

        RelativeLayout layout = new RelativeLayout(this);

CheckBox cb1 = new CheckBox(this);
cb1.setId(1);
cb1.setText("A");

CheckBox cb2 = new CheckBox(this);
cb2.setId(2);
cb2.setText("B");

CheckBox cb3 = new CheckBox(this);
cb3.setId(3);
cb3.setText("C");

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
layout.setLayoutParams(lp);

layout.addView(cb1);     

lp.addRule(RelativeLayout.BELOW,cb1.getId());
cb2.setLayoutParams(lp);        
layout.addView(cb2);

RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);//important

lp2.addRule(RelativeLayout.BELOW,cb2.getId());//important
cb3.setLayoutParams(lp2);//important
layout.addView(cb3);
Run Code Online (Sandbox Code Playgroud)

我认为这会奏效.