0

我正在尝试实现以下 Android ListView。每个黄色框代表一行 ListView。如果您看到这些行,则每行都与上一行和下一行重叠。我搜索了谷歌,但我找不到任何合适的解决方案。如果有人有线索,请告诉我。

提前致谢。

在此处输入图像描述

4

2 回答 2

3

创造性思考。想象一下这个列表没有行重叠,但只有对角线。在您的代码中,将 Listview 的分隔线高度设置为 0:

ListView listView = (ListView)findViewById(R.id.your_listview);
listView.setDivider(null);
listView.setDividerHeight(0);

然后为行创建两个可绘制对象 - 一个用于奇数行,另一个用于偶数行:

在此处输入图像描述在此处输入图像描述

(不要使用这两个图像,因为它们的大小不正确/均匀,但要为您的特定列表创建这些图像)。

然后为您的列表视图创建一个适配器 - 并在其getView方法中为您的元素设置相应的背景:

@override
public void getView(int position, View convertView, ViewGroup parent) {
    MyView row;

    if(convertView == null) {
        row = (MyView)convertView;
    }
    else {
        row = ... //create your view - inflate or create in code
    }

    row.setBackgroundResource(position%2==1 ? R.drawable.row_odd : R.drawable.row_even);

    ...  //populate the rest of the row with whatever you need

    return row;
}

瞧!你得到你需要的效果(注意,在这个示意图上,黑线代表行之间的边界 - 这些仅用于示意性目的 - 在你的最终结果中你不会有它们):

在此处输入图像描述

最后,请注意,如果您想在选择项目时突出显示“行”,则必须实现自定义状态更改侦听器,这将更改被选中单元格的背景以及其上方和下方的背景以创造适当的视觉效果。

于 2012-04-10T16:26:21.187 回答
0

我遇到了同样的问题,但我设法找到了解决方案

在 xml 的 ListView 中,您可以设置一个负的 dividerHeight,它对我有用。

<ListView
...
android:dividerHeight="-5dp" />

我希望它可以帮助某人:)

于 2015-07-21T19:32:19.430 回答