4

我正在向 LinearLayout 添加一些视图,顶部有轻微重叠,代码如下:

viewHolder.linearLayout.removeAllViews();
for (int i = 0; i < conversation.getPreviousMessages().length; i++) {
    View messageView = layoutInflater.inflate(R.layout.layout_previous_message_row, null);

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    layoutParams.setMargins(0, -5, 0, 0);

    viewHolder.linearLayout.addView(messageView, layoutParams);
}

在这段代码中,一些视图按 A、B、C 的顺序添加到布局中,其中 A 在后面,C 在前面。

我想颠倒顺序,使A在前面,C在后面。

我试过这个,但没有任何反应。

我怎样才能做到这一点?拜托,你们能给我一些代码吗?

提前致谢。

4

2 回答 2

1

如果这是您要问的问题,则可以更改视图的 z 顺序。如果需要,您通常可以获得在该类中使用 View.bringToFront() 功能的效果。

View.bringToFront

于 2013-03-21T18:28:31.410 回答
1

在墙上打了几下之后,我终于找到了解决方案:

1.- 我将布局从 LinearLayout 更改为 RelativeLayout,因为bringChildToFront 在 LinearLayout 中有一个奇怪的行为。

2.- 将视图添加到RelativeLayout 后,我​​向后迭代视图并制作了一个bringChildToFront。

这是代码:

for (int i = 0; i < conversation.getPreviousMessages().length; i++) {
     View messageView = layoutInflater.inflate(R.layout.layout_previous_message_row, null);
     messageView.setId(99+i);

     viewHolder.relativeLayout.addView(messageView);

     if (i > 0) {
         RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
         layoutParams.setMargins(0, -5, 0, 0);
         layoutParams.addRule(RelativeLayout.BELOW, 99+i-1);

         messageView.setLayoutParams(layoutParams);
     }
 }

 for (int i = viewHolder.relativeLayout.getChildCount() - 1; i >= 0; i--) {
     viewHolder.relativeLayout.bringChildToFront(viewHolder.relativeLayout.getChildAt(i));
 }

我希望它可以帮助某人。

于 2013-03-22T00:39:15.880 回答