您的位置:首页 > 移动开发 > Android开发

Android 使用RecyclerView实现列表item重叠效果(使用addItemDecoration方法)

2017-08-24 17:55 1226 查看
项目有一个界面是这样的



看到后第一眼觉得应该使用RecyclerView,首先这个列表是item叠放效果,下面的压住了上面的一部分,而且item背景图片四周都有些透明阴影,不能简简单单的重定item高度解决,当然得需要很有私人订制范的RecyclerView了,要不就去找找有用的API方法,要不就是自定义LayoutManager。

很高兴,RecyclerView的一个方法能够解决这种效果,就是addItemDecoration方法;

一般我们都这样用

mRecyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
outRect.bottom = 10;
}
});


能够使RecyclerView有一个10像素的透明分割线。

那如果这个值是负数呢?很幸运,这样能达到我们想要的重叠效果:



很明显实现了我们想要的效果,但最后一个的item也被挡了,说明每一个item的下面都有一个分割线,因为outRect.bottom = 10为正值时也能看到:



很明显滚动到最后一条时,底部有一个透明分割线。

那如何让RecyclerView的最后一个item不显示呢?还是刚才的代码,加一句判断就行了:

mRecyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
if (parent.getChildPosition(view) != (mlist.size() - 1)) {
outRect.bottom = -100;
}

}
});


parent.getChildPosition(view)能够获取item的View在parent中的索引,只要它不是最后一个就添加分割线高度,虽然方法已过时,但仍然完美的解决了问题。



注:Demo是随便写的,负值的多少还是需要根据Ui设计来计算。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐