一、SwipeRefreshLayout简单介绍
以下官方文档,已有了很详细的描述了。
说白了就是谷歌爸爸给我们提供的一个下拉刷新,非常好用,具体用法我们下面介绍。
二、SwipeRefreshLayout使用
使用SwipeRefreshLayout实现下拉刷新其实很简单,类似ScrollView,只能接受一个子布局,然后在代码里设置OnRefreshListener设置监听,最后在监听里设置刷新时的数据获取就可以了。由于是新出来的东西,所以要想使用,先把support library的版本升级到19.1或更新。
废话不多说,先看效果
使用起来很简单,在布局的最外面套上一层SwipeRefreshLayout就好了,比如
然后在代码中
没错,你只需要findViewById找到控件,给他来一个setOnRefreshListener就可以了。
三、SwipeRefreshLayout主要方法介绍
什么,你嫌弃黑色圈圈太丑了,OK,这样怎么样。
其实很简单,只需要调用这一行代码就好了,传入你想要的颜色,SwipeRefreshLayout就会按顺序显示颜色
一些其他的方法介绍
isRefreshing()
判断当前的状态是否是刷新状态。
setProgressBackgroundColorSchemeResource(int colorRes)
设置下拉进度条的背景颜色,默认白色。
setRefreshing(boolean refreshing)
设置刷新状态,true表示正在刷新,false表示取消刷新。
四、SwipeRefreshLayout常见冲突解决
坑来了,当你像我一样去用SwipeRefreshLayout嵌套ListView的时候你就会发现,当你的ListView滑动到下面的时候,再向上滑动,这时候SwipeRefreshLayout触发了刷新的事件,也就是滑动冲突,那么问题来了,怎么办呢?不要方,老衲给你出一招,看图
其实很简单,给listview设置一个滑动监听,在onScroll方法中,第二个参数就是第一个可见条目,我们根据这个参数来,如果等于0那么就说明listview这时候是在顶部的,那么就允许SwipeRefreshLayout滑动,否则不允许,上效果图。
同理,在嵌套ScrollView的时候,也会发生滑动冲突,这里就不演示了,直接上解决的代码了。