我正在尝试实现以下Android ListView。每个黄色框表示一行ListView。如果您看到行,则每行都会被上一行和下一行重叠。我搜索过谷歌,但我找不到任何合适的解决方案。如果有人有线索,请告诉我。
提前致谢。
答案 0 :(得分:3)
在盒子外面思考。想象一下这个列表没有行重叠,只是在它上面有对角线。在您的代码中,将Listview的分隔符高度设置为0:
ListView listView = (ListView)findViewById(R.id.your_listview);
listView.setDivider(null);
listView.setDividerHeight(0);
然后为行创建两个drawable - 一个用于奇数行,另一个用于偶数行:
和
(不要使用这两张图片,因为它们的尺寸不合适/均匀,但会为您的特定列表创建一些图片。)
然后为列表视图创建一个适配器 - 并在其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;
}
瞧!你得到了你需要的效果(注意,在这个原理图中,黑线表示行之间的界限 - 这些仅用于示意图 - 在最终结果中你不会有它们):
最后,请注意,如果要在选择项目时突出显示“行”,则必须实现自定义状态更改侦听器,这将更改正在选择的单元格的背景以及上面的那些在它下面,以创造适当的视觉效果。
答案 1 :(得分:0)
我遇到了同样的问题,但我设法找到了解决方案
在xml的ListView中你可以设置一个负的dividerHeight,它适用于我。
<ListView
...
android:dividerHeight="-5dp" />
我希望它可以帮助某人:)