我正在尝试在彼此之下动态添加多个布局。所以我写了下面的代码:
for (int i = 1; i <= layoutCounter; i++) {
View neu = inflater.inflate(R.layout.vote, parent, false);
neu.setId(layoutID);
if (layoutID == 1) {
params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.BELOW, R.id.txtMultiline);
} else {
params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.BELOW, neu.getId());
}
neu.setLayoutParams(params);
parent.addView(neu);
layoutID++;
}
txtMultiline是一个用XML定义的固定视图。 LayoutID是一个整数,以1开头。第一个布局在txtMultiline TextView下正确添加。但是所有后续布局都只是添加到父布局(这是一个RelativeLayout)之上。无法得到原因.. else-route正确执行。但是当试图将它应用于我动态膨胀的布局时,BELOW常量似乎没有任何效果。我做错了什么?
答案 0 :(得分:5)
可能与:
params.addRule(RelativeLayout.BELOW, layoutID-1);
而不是:
params.addRule(RelativeLayout.BELOW, neu.getId());
在你的其他情况下。
答案 1 :(得分:0)
您可以尝试这样
RelativeLayout.LayoutParams rl = new RelativeLayout.LayoutParams(...)
rl.addRule(RelativeLayout.BELOW, anotherview.getId())
rl.addRule(RelativeLayout.ALIGN_PARENT_LEFT)
parentLayout.addView(myView, rl)