android动态地在彼此之下添加布局

时间:2013-01-03 12:44:20

标签: android relativelayout layout-inflater

我正在尝试在彼此之下动态添加多个布局。所以我写了下面的代码:

   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常量似乎没有任何效果。我做错了什么?

2 个答案:

答案 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)