美文网首页
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