4

我想在 Android 中实现一个包含一些自定义视图的列表。我的问题是我希望视图一个接一个地放置,它们之间有一点重叠。就像在以下架构中一样:在此处输入图像描述

我还想以这样一种方式控制这种重叠,当用户单击其中一个项目时,它们将彼此分开。

我试图扩展 ListView 但它似乎很模糊,有什么建议吗?

编辑:这可以更清楚:

在此处输入图像描述

我通过将分隔线高度设置为 -50dp 来做到这一点。这正是我想要实现的,但不知何故它并没有反映在我的应用程序上。

4

2 回答 2

4

我设法通过使用具有单个相对布局的滚动视图作为孩子来实现这一点。然后我通过定义规则和边距来动态放置视图:

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 值来控制子视图的定位(例如:如果要添加动画)。

这是最终结果:

包含重叠项目的布局

于 2012-11-27T07:29:20.540 回答
1

这可能可以通过使用该Camera.setTranslate功能来实现。有关类似问题,请参阅Android:具有重叠行的垂直 ListViewAndroid:垂直 3d 列表视图(带有解决方案)

于 2012-11-27T07:37:07.670 回答