如何通过Android中的代码动态调整Relativelayout中的视图元素?
问题描述:
我想通过代码动态地在相对布局中显示3个复选框。但我只能显示两个复选框,一个在另一个之下。我在下面给出我的代码....我无法找出我错在哪里。如何通过Android中的代码动态调整Relativelayout中的视图元素?
我的代码 -
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);
在此先感谢。
罗汉沃
答
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和LP2的CB3 使用LP和创建这样
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);
我认为这会工作。
反正有动态创建规则吗? 请看看这个问题http://stackoverflow.com/questions/12048714/create-dyanamic-rule – 2012-08-21 05:20:37
是的,你可以动态地创建一个规则。但你真正想要的是什么还不确定。对不起,这么晚回复 – Diljeet 2013-12-27 11:24:33