Android ListView置顶标题实现

Android 里 ListView 的标题置顶效果,挺实用但又有点小 tricky。你肯定也碰到过,列表滚起来后,原本的分组标题一下子就被刷掉了,用户一下就迷路了。这时候,就该上个置顶标题救场了。

用了一个叫PinnedHeaderListView的小东西,改造了 ListView,专门搞定这种置顶标题的需求。它其实就是在滚动过程中,把当前组的标题“钉”在顶部,看起来像没动过一样。嗯,挺聪明的做法。

,你不能直接套用,还得配一个自定义 Adapter,同时让它实现PinnedHeaderInterface接口。这个接口不复杂,两个方法,一个是把当前项转成标题,一个是返回标题高度,就这俩。逻辑清晰,好上手。

重点在getView()里判断是不是标题项,配合setHeaderDividersEnabled(false)让它美观点。至于滑动效果,就靠onScroll()回调来控制置顶状态。稍微下,滑动体验就丝滑。

对了,别忘了样式上的区分哦,标题得有点“标题样”,可以加点动画,像淡入淡出的过渡,看起来更自然。性能方面嘛,注意别每次都重新 new 视图,用 ViewHolder 或者DiffUtil来优化一下,效果会好多。

如果你更习惯用RecyclerView,也可以考虑用ItemDecoration搞定。甚至自己写个ViewGroup也不是不行。不过像这种轻量又稳定的 ListView 方案,还是挺适合旧项目或者改造需求不大的场景。

感兴趣的话,还可以看看这些文章:

如果你项目里列表比较多,想提升用户定位效率,这种置顶标题的真的蛮值的。

zip 文件大小:81.12KB