如何动态地通过code在Android的对齐RelativeLayout的视图元素? [英] How to align view elements in Relativelayout dynamically through code in Android?

查看:111
本文介绍了如何动态地通过code在Android的对齐RelativeLayout的视图元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要动态地code.But,显示如下彼此相对布局3复选框一我是能够显示只有两个复选框以下某一对方。我给我下面的code ....我无法找出我错了。

我的code -

  RelativeLayout的布局=新RelativeLayout的(这一点);

    复选框CB1 =新的复选框(本);
    cb1.setId(1);
    cb1.setText(A);

    复选框CB2 =新的复选框(本);
    cb2.setId(2);
    cb2.setText(B);

    复选框CB3 =新的复选框(本);
    cb3.setId(3);
    cb3.setText(C);

    RelativeLayout.LayoutParams LP =新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);
 

在此先感谢。

罗翰沃

解决方案

  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,以同样的layoutparameters反对LP一次再次)。 使用LP的CB2和LP2的CB3 创造这样的

  RelativeLayout的布局=新RelativeLayout的(这一点);

复选框CB1 =新的复选框(本);
cb1.setId(1);
cb1.setText(A);

复选框CB2 =新的复选框(本);
cb2.setId(2);
cb2.setText(B);

复选框CB3 =新的复选框(本);
cb3.setId(3);
cb3.setText(C);

RelativeLayout.LayoutParams LP =新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 =新RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); //重要

lp2.addRule(RelativeLayout.BELOW,cb2.getId()); //重要
cb3.setLayoutParams(LP2); //重要
layout.addView(CB3);
 

我想这会工作。

I want to display 3 check box one below each other in relative layout dynamically through code.But i am able to display only two check box one below each other. I am giving below my code....I am not able to find out where i am going wrong.

My Code -

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

Thanks in advance.

Rohan Waugh

解决方案

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

Thanks man this helped me a lot

I guess you are wrong at the point that you are using "lp" as the layout parameters for both cb2 and cb3(you can't add the same rule "RelativeLayout.BELOW" to same layoutparameters object "lp" again and again). Use lp for cb2 and lp2 for cb3 and create like this

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

I think this will work.

这篇关于如何动态地通过code在Android的对齐RelativeLayout的视图元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆