我正在尝试以编程方式(而不是通过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);
更新:
谢谢,TreeUK。我了解总体方向,但仍然无法正常工作-“ B”与“ A”重叠。我究竟做错了什么?
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);
在您的代码示例中,您实际上并未添加RelativeLayout.BELOW的规则,tv1.getId();。
—
Tristan Warner-Smith'2
您需要为子视图提供ID:tv1.setId(1); tv2.setId(2); 父视图不会自动为子视图分配ID,并且ID的默认值为NO_ID。id在视图层次结构中不必唯一-因此1、2、3等都是可以使用的优良值-您必须将它们用于相对锚定才能在RelativeLayout中工作。
—
sechastain 2011年