我想在Android中实现一个包含一些自定义视图的列表。 我的问题是我想要一个接一个地放置视图,它们之间有一点重叠。如以下架构中所示:
我还希望控制这种重叠,以便当用户点击其中一个项目时,它们会彼此分开。
我试图扩展ListView但似乎很模糊,有什么建议吗?
编辑: 这可以更清楚:
我是通过将分隔符高度设置为-50dp来实现的。 这正是我想要实现的目标,但不知怎的,它并没有反映在我的应用程序上。
答案 0 :(得分:3)
我设法通过使用具有单个相对布局的滚动视图作为子项来实现此目的。 然后我通过定义规则和边距来动态放置视图:
for (int i = 0; i < 30; i++) {
TextView tv = new TextView(context);
tv.setText("Text \n Text" + i);
tv.setBackgroundColor(i % 2 == 0 ? Color.RED : Color.GREEN);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
lp.leftMargin = 0;
lp.topMargin = (i * 45);
rl.addView(tv, lp);
}
稍后,您可以通过更改y值来控制子视图的位置(例如:如果要添加动画)。
这是最终结果:
答案 1 :(得分:1)
这可以通过使用Camera.setTranslate
函数来实现。有关类似问题(使用解决方案),请参阅Android: Vertical ListView with overlaped rows和Android: vertical 3d listview