-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

一切都是以编程方式生成的。

事件发生后,我需要在两个子视图之间添加一个子视图。我做这个:

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 回答