我试图以编程方式(而不是通过XML声明)实现以下目标:
<RelativeLayout...>
<TextView ...
android:id="@+id/label1" />
<TextView ...
android:id="@+id/label2"
android:layout_below: "@id/label1" />
</RelativeLayout>
换句话说,我如何使第二个TextView
出现在二下面,但我想用代码来完成:
RelativeLayout layout = new RelativeLayout(this);
TextView label1 = new TextView(this);
TextView label2 = new TextView(this);
...
layout.addView(label1);
layout.addView(label2);
setContentView(layout);
RelativeLayout layout = new RelativeLayout(this);
TextView tv1 = new TextView(this);
tv1.setText("A");
TextView tv2 = new TextView(this);
tv2.setText("B");
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.FILL_PARENT);
lp.addRule(RelativeLayout.RIGHT_OF, tv1.getId());
layout.addView(tv1);
layout.addView(tv2, lp);
发布于 2018-03-12 06:41:17
必须使用LayoutParams添加视图。
LinearLayout linearLayout = new LinearLayout(this);
RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
relativeParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
parentView.addView(linearLayout, relativeParams);
所有的功劳都归功于sechaden,必须将ID分配给它们。
TextView tv1 = new TextView(this);
tv1.setId(1);
TextView tv2 = new TextView(this);
tv2.setId(2);
然后addRule(RelativeLayout.RIGHT_OF, tv1.getId());
发布于 2018-03-12 08:14:02
长话短说:使用相对布局,可以将元素放置在布局中。
发布于 2018-03-12 08:39:42
最后意识到你不能使用零作为视图id。 你会认为它被允许为NO_ID == -1,但如果你把它提供给你的视图,事情往往会变得不合时宜......
https://stackoverflow.com/questions/-100003604
复制相似问题