我正在向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放到后面。
我尝试了this,但没有任何反应。
我怎样才能达到这个目标? 拜托,你们有人能给我带些代码吗?
提前致谢。
答案 0 :(得分:1)
如果这是您要问的问题,则可以更改视图的z顺序。如果需要,您通常可以在该类中使用View.bringToFront()功能。
答案 1 :(得分: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));
}
我希望它对某人有所帮助。