2

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

   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 常量应用于我的动态膨胀布局时,它似乎没有任何效果。我究竟做错了什么?

4

2 回答 2

5

也许与:

params.addRule(RelativeLayout.BELOW, layoutID-1);

代替:

params.addRule(RelativeLayout.BELOW, neu.getId());

在你的其他情况下。

于 2013-01-03T13:16:53.607 回答
0

你可以这样尝试

RelativeLayout.LayoutParams rl = new RelativeLayout.LayoutParams(...)


rl.addRule(RelativeLayout.BELOW, anotherview.getId())
rl.addRule(RelativeLayout.ALIGN_PARENT_LEFT)

parentLayout.addView(myView, rl)
于 2013-01-03T13:00:46.313 回答