RecyclerView筛选框圆角实现
本文于 1084 天之前发表,文中内容可能已经过时。
筛选框是app的常用功能,如何实现下图红圈功能呢?
首先左侧目录可以通过一个RecyclerView实现,右侧同样可以实现一个RecyclerView,左侧的RecyclerView中我们想实现圆角的,但是该圆角的View已经不在ViewHolder中,我们很难在ViewHolder中画出两个圆角,所以我们通过其他方法实现
ItemDecoration有三个重要方法:
onDraw:在ViewHolder下方绘制
onDrawOver:在ViewHolder上方绘制
getItemOffsets:ViewHolder的偏移量
其中我们可以通过onDrawOver实现,将两个圆角绘制在ViewHolder上方显示出来
首先,我们搭建一个RecyclerView
1 | //MainActivity |
1 | //activity_main |
1 | //vh_item |
当在选中的时候改变VH的颜色,之后我们需要添加一个ItemDecoration,在ItemDecoration中我们需要知道选中的View,获取View宽高后,进行上下圆角的绘制
1 | class BorderItemDecoration() : RecyclerView.ItemDecoration() { |
绘制的细节如下:
- 先绘制获取选中view的坐标,计算出圆角半径的矩形位置,使用白色填充
- 在圆角半径内画圆,填充为#F6F6F6颜色,剩下的就是圆角白色
上下方法相同。
效果如下: