美文网首页
SwipeRefreshLayout使用及常见冲突解决

SwipeRefreshLayout使用及常见冲突解决

作者: 李晓通 | 来源:发表于2017-07-13 12:01 被阅读999次

一、SwipeRefreshLayout简单介绍

以下官方文档,已有了很详细的描述了。

官方文档

说白了就是谷歌爸爸给我们提供的一个下拉刷新,非常好用,具体用法我们下面介绍。

二、SwipeRefreshLayout使用

使用SwipeRefreshLayout实现下拉刷新其实很简单,类似ScrollView,只能接受一个子布局,然后在代码里设置OnRefreshListener设置监听,最后在监听里设置刷新时的数据获取就可以了。由于是新出来的东西,所以要想使用,先把support library的版本升级到19.1或更新。

废话不多说,先看效果

录制的gif有点卡顿

使用起来很简单,在布局的最外面套上一层SwipeRefreshLayout就好了,比如

然后在代码中

没错,你只需要findViewById找到控件,给他来一个setOnRefreshListener就可以了。

三、SwipeRefreshLayout主要方法介绍

什么,你嫌弃黑色圈圈太丑了,OK,这样怎么样。

有点非主流。。。

其实很简单,只需要调用这一行代码就好了,传入你想要的颜色,SwipeRefreshLayout就会按顺序显示颜色


一些其他的方法介绍

isRefreshing()

    判断当前的状态是否是刷新状态。

setProgressBackgroundColorSchemeResource(int colorRes)

    设置下拉进度条的背景颜色,默认白色。

setRefreshing(boolean refreshing)

    设置刷新状态,true表示正在刷新,false表示取消刷新。

四、SwipeRefreshLayout常见冲突解决

坑来了,当你像我一样去用SwipeRefreshLayout嵌套ListView的时候你就会发现,当你的ListView滑动到下面的时候,再向上滑动,这时候SwipeRefreshLayout触发了刷新的事件,也就是滑动冲突,那么问题来了,怎么办呢?不要方,老衲给你出一招,看图

大家可以明显看到,listview已经回不到顶部了,怎么办呢?

其实很简单,给listview设置一个滑动监听,在onScroll方法中,第二个参数就是第一个可见条目,我们根据这个参数来,如果等于0那么就说明listview这时候是在顶部的,那么就允许SwipeRefreshLayout滑动,否则不允许,上效果图。

同理,在嵌套ScrollView的时候,也会发生滑动冲突,这里就不演示了,直接上解决的代码了。

以上纯属于个人平时工作和学习的一些总结分享,如果有什么错误欢迎随时指出,大家可以讨论一起进步。

相关文章

网友评论

      本文标题:SwipeRefreshLayout使用及常见冲突解决

      本文链接:https://www.haomeiwen.com/subject/sonycxtx.html