Android 将项目动态放入RelativeLayout
我做了一些研究,但我发现的答案对我不适用。这是我代码的一部分。R.id.relative是xml文件中relativelayout的idAndroid 将项目动态放入RelativeLayout,android,Android,我做了一些研究,但我发现的答案对我不适用。这是我代码的一部分。R.id.relative是xml文件中relativelayout的id RelativeLayout RL = (RelativeLayout) findViewById(R.id.relative); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATC
RelativeLayout RL = (RelativeLayout) findViewById(R.id.relative);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
TextView title = new TextView(this);
title.setText(" History ");
title.setId(99099);
title.setTextSize(30);
title.setGravity(Gravity.CENTER);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
title.setLayoutParams(params);
RL.addView(title);
RelativeLayout.LayoutParams test_params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
Button test = new Button(this);
test.setText(" Back ");
test_params.addRule(RelativeLayout.BELOW,99099);
test.setId(199291);
test.setGravity(Gravity.CENTER);
test.setLayoutParams(test_params);
RL.addView(test);
RelativeLayout.LayoutParams test_params2 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
Button test2 = new Button(this);
test2.setText(" Clear ");
test_params2.addRule(RelativeLayout.BELOW,test.getId());
test2.setGravity(Gravity.CENTER);
test.setLayoutParams(test_params2);
RL.addView(test2);
所有3项都出现了,但它们叠加在一起。我不能把它们放在另一个下面。
有人能帮忙吗?更改
test.setLayoutParams(test\u params2)代码>至test2.setLayoutParams(测试参数2)代码>
说明:您第二次无意中设置了test
的布局参数,这些参数指示它位于自身下方,我想这只是将它放在左上方(默认放置在RelativeLayout
中)。由于您从未给出test2
任何布局参数,因此它也会获得默认位置。所以所有的东西都在上面,所以它们彼此都在上面
顺便说一句,如果您只是想让它们线性排列,为什么不使用垂直的线性布局呢?根据我的了解,您必须使用LayoutParams添加视图。下面是一个例子:
LinearLayout linearLayout = new LinearLayout(this);
RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
relativeParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
parentView.addView(linearLayout, relativeParams);
要以编程方式相对定位项目,您必须为它们分配ID,这会阻止它们“重叠”
TextView tv1 = new TextView(this);
tv1.setId(1);
TextView tv2 = new TextView(this);
tv2.setId(2);
然后addRule(RelativeLayout.RIGHT_OF,tv1.getId())代码>您添加的规则导致视图堆叠在一起。如果需要添加,则应使用以下规则
test_params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 1);
接下来,使用LayoutParams将视图添加到RelativeLayout:
RL.addView(yourAdView, rLParams);
每种情况也一样。试着运行。它会解决你的问题你认为Android会忽略你的规则吗-addRule(RelativeLayout.down,title.getId())代码>?当您将title.getId()更改为id值99099时会发生什么?仍然是一样的,现在我正在尝试将参数放入addview方法中。我对这一行非常好奇:parentView.addview(linearLayout,relativeParams);这是否意味着我在xml文件的布局中添加了另一个RelativeLayout;这只是一个示例rLParams是否等于test_params?我应该这样写:RL.addView(Btn1,test_参数);哦,不错,使用addView设置布局是正确的。谢谢你的评论。我的评论还是被投了反对票。谢谢你的赞赏:(我在这里太新了。不能给你任何积极的评价。)