NestedScrollView和RecyclerView使用,并设置间距: 效果图如下: 1.NestedScrollView 和RecyclerView嵌套问题(类似ScrollView...和listView)\ 需重写 RecyclerView 的 GridLayoutManager(还有另外2种,随便搜下就有) public class FullyGridLayoutManager...,实际上是NestedScrollView禁止滑动 public class MyNestedScrollView extends NestedScrollView { private int...的item间距 public class SpacesItemDecoration extends RecyclerView.ItemDecoration { private int...,写更多的博文。
您可能在开发过程中遇到过这种情况,在 Activity/Fragment 被重新创建后,RecyclerView 丢失了它之前保有的滚动位置信息。...通常这种情况发生的原因是由于异步加载 Adapter 数据,且数据在 RecyclerView 需要进行布局的时候尚未加载完成,导致 RecyclerView 无法恢复到之前的滚动位置。...从 1.2.0-alpha02 版本开始,Jetpack RecyclerView 提供了一个新的 API,可以让 Adapter 在数据加载完成之前阻塞布局行为 ,从而避免丢失滚动位置信息。...接下来我们会介绍如何使用这个新的 API,以及它的工作原理。 恢复至原有滚动位置 有好几种方法可以用来恢复 RecyclerView 至正确的滚动位置,您可能已经在实际项目中用到了这些方法。...() > 0) 的时候,才恢复 RecyclerView 的状态。
更强大的滚动控件RecyclerView 新建FruitAdapter02: package com.example.listviewtest; import android.support.v7.widget.RecyclerView...android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView...recyclerView = (RecyclerView) findViewById(R.id.recycler_view); LinearLayoutManager layoutManager...= new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); FruitAdapter02...adapter = new FruitAdapter02(fruitList); recyclerView.setAdapter(adapter); } private
下面是AppBarLayout结合RecyclerView实现的工具栏向上滚动效果截图: ?...NestedScrollView 虽说通过AppBarLayout可实现Toolbar的滚动效果,但并非所有可滚动的控件都会触发Toolbar滚动,事实上只有Android5.0之后新增的少数滚动控件才具备该特技...RecyclerView是其中一个特工,它可用来替代ListView和GridView;替代ScrollView的则另有其人,它便是嵌套滚动视图NestedScrollView,在Android5.0之后的...下面是AppBarLayout结合NestedScrollView实现的工具栏向上滚动效果截图: ?...所以,搜遍Android的SDK源码,总共也只有三个控件符合这个条件,它们是RecyclerView、NestedScrollView,以及SwipeRefreshLayout,在布局文件中使用的名称如下所示
我相信很久以前,大家在谈横向图片轮播是时候,优先会选择具有HorizontalScrollView效果和ViewPager来做,不过自从Google大会之后,系统为我们提供了另一个控件RecyclerView...RecyclerView是listview之后的又一利器,它可以实现高度的定制。今天就利用RecyclerView实现我们需要的相册效果。 先上一个图: ?...主要实现就是一个RecyclerView+RecyclerView.Adapter实现。...Activity的布局文件: RecyclerView android:id="@+id/recycler_view"...wrap_content" android:layout_centerVertical="true" android:scrollbars="none" /> 我这里是自定义的控件
RecyclerView的滚动事件OnScrollListener研究 http://www.open-open.com/lib/view/open1477623086381.html 滚动参数 http...() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int...newState) { super.onScrollStateChanged(recyclerView, newState); if (...hintKbTwo(); } } @Override public void onScrolled(RecyclerView...recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int
大家好,又见面了,我是你们的朋友全栈君。...RecyclerView是listview之后的又一利器,它可以实现高度的定制。今天就利用RecyclerView实现我们需要的相册效果。...先上一个图: 主要实现就是一个RecyclerView+RecyclerView.Adapter实现。...Activity的布局文件: RecyclerView android:id="@+id/recycler_view"...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
(例如 NestedScrollView 、 RecyclerView ) 中,开始嵌套滑动都依赖NestedScrollingChildHelper 这个对象。...RecyclerView 为例: 嵌套滑动我们最先接触到的可能就是 NestedScrollView 这个控件了,那么它是怎么支持嵌套滑动的呢?...如果滑动的时候不拦截的话,手势事件会交给子view去处理,如果子view是可以滚动的,这时候就会有冲突,所有滚动的时候事件要拦截下来交给自己处理。...接着分发嵌套滚动事件,中间还有一些针对 Scroll mode的处理,我们这里不关心: UP 的时候会根据距离判断是否需要消费快速滑动,如果不则会进行分发: 所以我们需要关注的就是: startNestedScroll...不全是,最常见的比如 NestedScrollView 包裹 RecyclerView ,这时候 NestedScrollView 会把 UNSPECIFIED 传递给 RecyclerView 的 onMeasure
当我们引入RecyclerView的时候,恰好是压死骆驼的最后一根稻草,故不得不采用其他方案来代替RecyclerView 和 CollapsingToolbarLayout实现的折叠效果。...本文试着采用 NestedScrollView 嵌套 ListView的方法来实现折叠效果。具体结果如图所示: ?...app:layout_scrollFlags="scroll|exitUntilCollapsed" 表示CoordinatorLayout的依赖元素滚动的时候,进行折叠。...enterAlwaysCollapsed - 当你的View已经设置minHeight属性又使用此标志时,你的View只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。...嵌套的listView滚动时无响应bug。
ScrollView和RecyclerView滑动冲突问题方法1:我们可以把scrollview换成androidx.core.widget.NestedScrollViewRecyclerView滚动冲突 --> NestedScrollView android:layout_width...="match_parent" android:layout_height="match_parent"> recyclerview.widget.RecyclerView...的外部套一个RelativeLayoutGridView在NestedScrollView失去高度显示不全在使用Android的ScrollView里面嵌套GridView时,设置android:layout_height...-- 原生Gridview自带滚动条,继承此类重写方法去掉滚动 --><com.example.view.MyGridView android:id="@+id/menu_view" android
mViewCacheExtension(自定义缓存),不直接使用,需要用户自定义实现,默认不实现。...还有一个办法就是用Nestedscrollview代替ScrollView,Nestedscrollview是官方为了解决滑动冲突问题而设计的新的View。...它的定义就是支持嵌套滑动的ScrollView。 所以直接替换成Nestedscrollview就能保证两者都能正常滑动了。...这是因为RecyclerView默认是setNestedScrollingEnabled(true),这个方法的含义是支持嵌套滚动的。...也就是说当它嵌套在NestedScrollView中时,默认会随着NestedScrollView滚动而滚动,放弃了自己的滚动。所以给我们的感觉就是滞留、卡顿。
通常我们要自行手动处理的就是RecyclerView作为嵌套滑动子view的情况。NestedScrollView一般直接作为根布局用来解决嵌套滑动。...2.2 再来看看NestedScrollView嵌套RecyclerView 关于NestedScrollView嵌套RecyclerView的情况,即头部和列表可以一起滑动。如下图: ?...NestedScrollView嵌套RecyclerView 参考这篇实名反对《阿里巴巴Android开发手册》中NestedScrollView嵌套RecyclerView的用法。...从此篇文章分析结论得知,NestedScrollView嵌套RecyclerView虽然可以实现效果,但是RecyclerView会瞬间加载所有item,RecyclerView失去的view回收的特性...,大于想要滚动的距离,内层自行处理 }else { //内层已滚动的距离,小于想要滚动的距离,那么内层消费一部分,到顶后,剩的外层滑动
当RecyclerView内容过多,超出屏幕的时候,需要让它自己滚动展示数据,尤其是某些Android设备处于高处,或是不可被触摸点击的,这样的情况下,让其自己滚动展示数据尤为重要了 自动滚动的方案有很多种...,目前比较常见又最简单的一种是:继承至RecyclerView,并实现runnable方法,每间隔10ms(delayTime)就去执行scrollby(x,y)方法,其中delayTime和x,y的值决定了滚动速度...//注意scrollBy和scrollTo的区别 //延迟发送 recyclerView.postDelayed(recyclerView.autoPollTask...} } 上面代码实现了最基本的滚动功能,但有时候Adnroid设备可以触摸的话,而当前recyclerview正在滚动,又去滑动它,那就会造成界面错乱,数据错乱了,所以还需要重写拦截onTouchEvent...方法,当触摸到recyclerview的时候,即在ACTION_DOWN的时,停止滚动线程,在ACTION_UP、ACTION_CANCEL时再开启线程。
Override protected int getVerticalSnapPreference() { return SNAP_TO_START;//具体见源码注释 } } 3、RecyclerView...的 scrollBy(int x, int y) scrollToPosition(int position)
最初想用 CoordinatorLayout 加 RecyclerView,但效果不好直接用,或者用 NestedScrollView 与 RecyclerView 组合使用。...但 NestedScrollView 与 RecyclerView 组合时怎么也不能使 RecyclerView 自己滑动,而 NestedScrollView 不滑动,事件拦截,禁止嵌套滑动,NestedScrollView...是否消费 RecyclerView 发过来的距离,怎么试都不行,最终还是尝试用 CoordinatorLayout 和 RecyclerView 组合。...,让外面滚动,此时 appbarLayout.y 从 0 开始慢慢变小, // 变到 -barHeightDistance 时不再滑动,让 RecyclerView 滑动...1,悬浮标题还能看见 } else { // 要吸顶的位置到了,让外面滚动,此时 appbarLayout.y 从 0 开始慢慢变小, // 变到 -barHeightDistance
NestedScrollView 在新版的support-v4兼容包里面有一个NestedScrollView控件,这个控件其实和普通的ScrollView并没有多大的区别,这个控件其实是Meterial...应该说在MD中,RecyclerView代替了ListView,而NestedScrollView代替了ScrollView,他们两个都可以用来跟ToolBar交互,实现上拉下滑中ToolBar的变化。...在RecyclerView或者任意支持嵌套滚动的view比如NestedScrollView上添加app:layout_behavior。...RecyclerView的任意滚动事件都将触发AppBarLayout或者AppBarLayout里面view的改变。...AppBarLayout里面定义的view只要设置了app:layout_scrollFlags属性,就可以在RecyclerView滚动事件发生的时候被触发: <android.support.design.widget.AppBarLayout
本文介绍元素尺寸中内容最多的一部分——滚动scroll 滚动宽高 scrollHeight scrollHeight表示元素的总高度,包括由于溢出而无法展示在网页的不可见部分 scrollWidth...包含padding-bottom;而IE和firefox不包含padding-bottom 滚动时,scrollTop的值为0,如果元素被垂直滚动了,scrollTop的值大于0,且表示元素上方不可见内容的像素宽度 scrollLeft scrollLeft属性表示被隐藏在内容区域左侧的像素数...元素未滚动时,scrollLeft的值为0,如果元素被水平滚动了,scrollLeft的值大于0,且表示元素左侧不可见内容的像素宽度 当滚动条滚动到内容底部时,符合以下等式 scrollHeight...如果为true,表示元素的顶部与当前区域的可见部分的顶部对齐(前提是当前区域可滚动);如果为false,表示元素的底部与当前区域的可见部分的尾部对齐(前提是当前区域可滚动)。
当然RecyclerView也可以,用一个仿抖音的那种 LayoutManager 就行,但是为什么不呢,因为涉及到了视频播放,手动去处理一些生命周期和懒加载,总是非常麻烦,而且ViewPager2本身就是基于...但是首先你要考虑的东西就很多,如果视频详情页超出一屏呢,也就是内部用了 RecyclerView或者NestedScrollView 呢,是不是还需要处理一下滑动冲突,当然这也不是很困难,内部拦截法就可以搞定...接下来不却知道自己要开启了啪啪打脸时刻,满心欢喜,太easy啊,ViewPager2 真香! 打脸时刻 于是熟练的开分支,切分支,写demo,调用方法,走起! 先看一下这个方法。...解决方法 既然如此,ViewPager2是基于RecyclerView,那么我去调用RecyclerView滚动不就行吗,思路如下: ViewPager2-> RecyclerView, RecyclerView...默认是私有的,可以通过反射或者 getChildAt(0) 获取 RecyclerView不支持 scrollTo() ,可以通过 LinearLayouManager 去滚动 LinearLayoutManager-scrollToPositionWithOffset
嗨,我是哈利迪~最近有个bug排查了好几天,就是有个老页面因业务复杂度,使用了NestedScrollView+tab+多Fragment的结构(各Fragment里有RecyclerView,即存在嵌套滑动...: 添加了嵌套滚动改进;请参阅 NestedScrollingChild3 和 NestedScrollingParent3。...[007S8ZIlly1ghf2ej40ryj306406aabd.jpg] 代码仅供演示,非必要情况下并不推荐NestedScrollView和RecyclerView的嵌套。...相比NestedScrollView,RecyclerView只实现了NestedScrollingChild2,在嵌套滑动体系里只能作为子布局存在,所以下面以RecyclerView为子,NestedScrollView...阻断依赖可能造成类丢失,但编译期能及时发现(如果有人用反射去调一个野生类,是不是就发现不了了);而不阻断呢,又可能引入一些高版本的库,导致无法预测的问题。
嗨,我是哈利迪~最近有个bug排查了好几天,就是有个老页面因业务复杂度,使用了NestedScrollView+tab+多Fragment的结构(各Fragment里有RecyclerView,即存在嵌套滑动...: 添加了嵌套滚动改进;请参阅 NestedScrollingChild3 和 NestedScrollingParent3。...代码仅供演示,非必要情况下并不推荐NestedScrollView和RecyclerView的嵌套。...相比NestedScrollView,RecyclerView只实现了NestedScrollingChild2,在嵌套滑动体系里只能作为子布局存在,所以下面以RecyclerView为子,NestedScrollView...阻断依赖可能造成类丢失,但编译期能及时发现(如果有人用反射去调一个野生类,是不是就发现不了了);而不阻断呢,又可能引入一些高版本的库,导致无法预测的问题。
领取专属 10元无门槛券
手把手带您无忧上云