首页
学习
活动
专区
圈层
工具
发布

一行代码搞定SwipeRefreshLayout拦截事件

SwipeRefreshLayout这个控件大家可能几百年前就已经在熟练使用了,相关的博客也多不胜数,方法也许不同,但实质都是一样的,写这个的目的也只是为了先把公众号和星球转起来。...SwipeRefreshLayout是Android自己支持库的下拉刷新控件,官方文档中提示,只有其包裹的孩子是RecyclerView、ListView、ScrollView等可滑动控件才能正常执行下拉刷新完整逻辑...如果是非滑动控件,比如我们会常用到Material Design设计风格中的CoordinatorLayout控件AppBarLayout结合RecyclerView的使用,下拉刷新就会出现拦截问题导致无法滑动列表...很多博客对SwipeRefreshLayout都介绍得很详细,包括源码的分析,以及分析并解决遇到各种问题。...对于列表拦截冲突的解决方法,大致都是根据查看onInterceptTouchEvent方法里面的拦截机制,根据判断逻辑继承SwipeRefreshLayout类重写canChildScrollUp()来解决

1.4K90

Material Design中的一些趣事

,刷新的时候我们还需要注意一点,就是当你把toolbar里面的内容(也就是整个头部)顶上去之后,再下拉,它会立马进行刷新,不会等到你把toolbar中的内容拉到正常状态再进行刷新,详细解决方案请参考 CoordinatorLayout...AppBarLayout 结合下拉刷新 上拉加载更多 的滑动冲突解决 也就是说我们需要监听appbarlayout的滚动 appBarLayout.addOnOffsetChangedListener...appBarLayout, int verticalOffset) { if (verticalOffset >= 0) { swipeRefreshLayout.setEnabled...toolbar的内容全都拉下来就执行刷新了,这里效果图我们就不放了,有兴趣的哥们可以自己尝试一把。...接下来我们来看刷新之后数据分配的地方,这里我们使用set方式直接将数据设置到Fragment中的方法中,然后再由Fragment中的方法进行数据的展示。

64910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android开发笔记(一百三十五)应用栏布局AppBarLayout

    那么Android5.0也同时给出了相应的解决方案,即推出MaterialDesign库,通过该库中的AppBarLayout控件,对Toolbar加以包装,从而实现顶部工具栏的动态变化效果。...,还要通知头部控件(通常是Toolbar),告诉头部控件你要怎么滚,是爱咋咋滚,还是满大街滚; 具体到实现上,要在工程中做以下修改: 1、添加几个库的支持,包括appcompat-v7库(Toolbar...所以,搜遍Android的SDK源码,总共也只有三个控件符合这个条件,它们是RecyclerView、NestedScrollView,以及SwipeRefreshLayout,在布局文件中使用的名称如下所示...: 使用名称android.support.v4.widget.SwipeRefreshLayout AppBarLayout的滚动标志 前面说到给Toobar节点添加滚动属性app:layout_scrollFlags...1、AppBarLayout的滚动依赖于主体视图的滚动,与主体视图相对应的,可将AppBarLayout称作头部视图。既然一个页面分为头部和主体两部分,那么就存在谁先滚谁后滚的问题了。

    2.9K40

    Material Design 实战 之第五弹 —— 下拉刷新(SwipeRefreshLayout)

    文章提要与总结 ---- SwipeRefreshLayout 1.SwipeRefreshLayout即是实现下拉刷新功能的核心类,它由support-v4库提供的; 2.把想要实现下拉刷新功能的控件放置到...SwipeRefreshLayout里边,即可迅速让这个控件支持下拉刷新了; 3.接下来在对应的java代码中处理具体的刷新逻辑: 3.1 实例化SwipeRefreshLayout..., 传入一个SwipeRefreshLayout.OnRefreshListener()并重写onRefresh()来处理具体的刷新逻辑; 3.4 刷新逻辑使用中可以使用如下多线程结构...,然后在 runOnUiThread() 中的 run() 中获取到数据, 并adapter.notifyDataSetChanged()调用刷新数据; 最后调用swipeRefreshLayout...接着调用setonRefreshListener()方法设置一个下拉刷新的监听器,当触发了下拉刷新操作的时候就会回调这个监听器的onRefresh()方法,在这个方法中处理具体的刷新逻辑。

    1.4K50

    一个Demo学会用Android兼容包新控件

    学习内容 通过本实例可以学习到以下内容: Drawerlayout和NavigationView实现优雅的Google范儿侧边栏; 新控件CoordinatorLayout、AppBarLayout、Toolbar...、FloatingActionButton的用法,以及Toolbar的渐变隐藏动画效果; 官方Tabs组件TabLayout和ViewPager结合实现主界面内容区域; SwipeRefreshLayout...-- 你的主界面内容,必须放置在Drawerlayout中的第一个位置 根据自己的需要来放置控件, 例如:LinearLayout布局或者RelativeLayout布局;...-- 用来放Drawerlayout中的内容, 这里使用NavigationView来实现类似Google pLay中的侧滑栏效果, 必须在build.gradle中添加compile...-- SwipeRefreshLayout是伟大的Google在v4包中给出的下拉刷新组件。

    2.2K40

    Swift 中的属性包装器

    属性的属性 属性包装器也可以有自己的属性,并且支持进一步的定制,甚至可以将依赖项注入到包装器类型中。...然而,通过在通用属性包装器中实现这种逻辑,我们可以使其易于重用——因为这样做可以让我们简单地将包装器附加到任何希望由UserDefaults支持的属性。...我们所要做的就是将defaultValue属性添加到包装器中,然后在底层UserDefaults存储不包含属性键的值时使用它。...,但实际上它是可以添加到任何属性包装程序中的功能,例如前面的Flag类型。...一方面,它使我们能够以与未包装的属性完全相同的方式访问和分配包装的属性———但另一方面,存在的风险是,我们最终将在太多的抽象后面隐藏太多的非显而易见的功能。 Thanks for reading!

    3.6K30

    JavaScript中的包装类型详解

    JavaScript中的包装类型详解 • 在 JavaScript 中,我们有基本类型和对象类型两种数据类型。...• 包装类型是 JavaScript 中的一种特殊对象,它们将基本类型的值“包装”在对象中,使我们能够在基本类型上调用方法。...} • 在这个例子中,bool 是一个 Boolean 对象,其包装的值为 false。...在 JavaScript 中,有两种类型的布尔值:基本类型的布尔值(true 或 false)和 Boolean 对象(通过 new Boolean() 创建的,它是一个包装对象,可以包装一个布尔值,但它本身是一个对象...在 JavaScript 中,所有的对象(包括 Boolean 对象)在布尔上下文中都被视为 true,无论它们包装的值是 true 还是 false。 3. 这就是为什么 if 语句中的 !

    88220

    【Android】这效果,我没法描述

    额,应该可以勉强看懂后面的内容) 2、顶部悬浮以及“被顶走”的效果 只要在CoordinatorLayout外面套一层FrameLayout,然后把这个顶部的布局改在上面。...Java代码中为ViewPager添加几个列表Fragment就能看到以下的效果(注意:列表不可以是ListView,需要用RecyclerView) ?...这时候只要在MainActivity中对AppBarLayout的滚动进行监听即可。...Tips 问题:使用CoordinatorLayout时,滚动不流畅问题 解决方案:可以写个Behavior添加到AppBarLayout中。...具体的解决方案 问题:如果你在想要刷新功能,在CoordinatorLayout外面套了一个SwipeRefreshLayout,一不小心就触发了刷新~~(自己体会) 解决方案:这个问题可以通过对AppBarLayout

    1.2K50

    深入浅出 Java 中的包装类

    前阵子,我们分享了《Java中的基本数据类型转换》这篇文章,对许多粉丝还是有带来帮助的,今天讲一下 Java 包装类的的由来,及自动装箱、拆箱的概念和原理。...ArrayList(); 2、成员变量不能有默认值; private int status; 基本数据类型的成员变量都有默认值,如以上代码 status 默认值为 0,如果定义中 0 代表失败,那样就会有问题...其实自动装箱的原理就是调用包装类的 valueOf 方法,如第 2 个方法中的 Integer.valueOf 方法。...方法,如 i5 中的 Integer 的 intValue 方法。...需要注意的是,关于 Integer,-128 ~ 127 会有缓存,对比这个范围的值的对象是一个坑,这个在阿里巴巴规范中也有提及。 详细请参考《IntegerCache的妙用和陷阱》这篇文章。 (完)

    92530

    细说 AppbarLayout,如何理解可折叠 Toolbar 的定制

    向上滑动的时候,Toolbar 先滑动,然后 NestedScrollView 中的内容再滑动。 向下滑动的时候,NestedScrollView 中的内容先滑动,然后 Toolbar 再一起滑动。...enter 和 exit 的概念 这两个直译为中文就是进入和离开。这里的主语是 AppBarLayout 中的内容,宾语是 CoordinatorLayout。 ?...当 AppBarLayout 中的内容要从 CoordinatorLayout 外面进入内部时,我们用 enter 指代这种行为,对应的手势就是向下滑动。...当 AppBarLayout 中的内容从 CoordinatorLayout 内部向外部方向移动时,我们用 exit 指代这种行为,对应的手势是向上滑动。...大家可以参考下 ViewPager 是怎么滑动的,只不过 ViewPager 是水平方向上的,AppBarLayout 中的内容是垂直方向上的行为。

    3.9K30

    探讨 SwiftUI 中的几个关键属性包装器

    在这篇文章中,我们将探讨几个在 SwiftUI 开发中经常使用且至关重要的属性包装器。本文旨在提供对这些属性包装器的主要功能和使用注意事项的概述,而非详尽的使用指南。...访问我的博客 www.fatbobman.com[1] 可以获得更好的阅读体验以及最新的更新内容。...注意事项 尽量仅在视图的内部使用 @State,即使未显式标记为 private,也应当将其视为视图的私有属性。 @State 为包装数据同时提供了双向数据绑定管道,可以通过 $ 前缀来访问。....environmentObject(b) @Environment @Environment 是视图用于从环境中读取、响应、调用特定值的属性包装器。...在 iOS 17+ 的环境中,如果应用主要依赖于 Observation 和 SwiftData 框架,那么这三个属性包装器的使用频率可能会相对较低。

    2.9K10
    领券