【问题标题】:How to align view elements in Relativelayout dynamically through code in Android?如何通过Android中的代码动态对齐Relativelayout中的视图元素?
【发布时间】:2013-12-01 04:47:15
【问题描述】:

我想通过代码动态地在相对布局中显示 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);

提前致谢。

罗汉·沃

【问题讨论】:

    标签: android


    【解决方案1】:
    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);
    

    谢谢,这对我帮助很大

    我猜你在使用“lp”作为 cb2 和 cb3 的布局参数时是错误的(你不能再次将相同的规则“RelativeLayout.BELOW”添加到相同的布局参数对象“lp”并且再次)。 对 cb2 使用 lp,对 cb3 使用 lp2 并像这样创建

            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);
    

    我认为这会奏效。

    【讨论】:

    猜你喜欢
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多