-1

次のように、子ビューを持つRelativeLayoutコンテナーがあります。

[ -> begin of relative layout containner
 [view] -> view (LinearLayout)
 [view] -> view (LinearLayout) + rule (below of previous view)
 [view] -> view (LinearLayout) + rule (below of previous view)
] -> end of relative layout

すべてがプログラムで生成されています。

イベントの後、2 つの子ビューの間に子を追加する必要があります。私はこれを作ります:

public void add(PerguntaViewContainner parent, PerguntaViewContainner child) {
    PerguntaViewContainner previousChild = parent;
    PerguntaViewContainner nextChild =  HocusPocus.getNextElementOf(parent);

    perguntaParams.addRule(RelativeLayout.BELOW, previousChild.getId());
    perguntaParams.addRule(RelativeLayout.ABOVE, nextChild.getId());

    containner.addView(child, perguntaParams);
}

しかし、その子は現れません。なぜそれが起こる可能性があるのか​​ 、何か考えがありますか?

4

1 に答える 1

0

次のように、他の子パラメーターも修正する必要があるようです。

public void add(PerguntaViewContainner parent, PerguntaViewContainner child) {
    PerguntaViewContainner previousChild = parent;
    PerguntaViewContainner nextChild =  HocusPocus.getNextElementOf(parent);

    perguntaParams.addRule(RelativeLayout.BELOW, previousChild.getId());
    perguntaParams.addRule(RelativeLayout.ABOVE, nextChild.getId());

    containner.addView(child, perguntaParams);

    final RelativeLayout.LayoutParams nextViewParams = (RelativeLayout.LayoutParams)nextChild.getLayoutParams();

    nextViewParams.addRule(RelativeLayout.BELOW, child.getId())
    nextChild.setLayoutParams(nextViewParams);
}

ただし、質問は完全ではなく、カスタム レイアウトで簡単に問題になる可能性があります。

于 2013-10-23T07:47:44.460 に答える