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

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 に答える