首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

RecyclerView是其中一个特工,它可用来替代ListView和GridView;替代ScrollView的则另有其人,它便是嵌套滚动视图NestedScrollView,在Android5.0之后的...所以,搜遍Android的SDK源码,总共也只有三个控件符合这个条件,它们是RecyclerView、NestedScrollView,以及SwipeRefreshLayout,在布局文件中使用的名称如下所示...3、大家都知道ViewPager是左右滚动的翻页视图,用户通过手势把页面横向拉动一段距离后松开,系统会判断接下来是自动左滚还是自动右滚,总之最后用户看到的是一个完整的页面,而不是拉到一半的页面。...区分好了各种滚动行为的起因与目的,然后再来谈谈layout_scrollFlags的标志位取值说明,具体的取值有五个说明如下: 1、scroll : 头部与主体一起滚动。...具体的滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠的最小高度。然后头部与主体先一起滚动,头部滚到位后,主体继续向上。 向下滚动:头部与主体先一起滚动,一直滚到头部折叠的最小高度。

2K40

聊聊Android嵌套滑动

如果滑动的时候不拦截的话,手势事件会交给子view去处理,如果子view是可以滚动的,这时候就会有冲突,所有滚动的时候事件要拦截下来交给自己处理。...(dx, dy, consumed, null, type); 会继续往父布局的父布局分发 pre-scroll。...接下来会继续执行 dispatchNestedScroll: ViewParentCompat.onNestedScroll(parent, mView, dxConsumed,...个方法类似: 在 NestedScrollView里,仍然会带着最新的消费距离去继续分发嵌套滚动的事件: 这里父布局会接收到子view传来的 dyUnconsumed ,然后进行 scrollBy...嵌套滚动方案的选择 有了这些接口之后,我们可以看到其实内置的Android 控件都支持了滑动嵌套,那么是否我们平时使用的方法都是正确的呢?

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

    不一样角度带你了解 Flutter 中的滑动列表实现

    所以根据以上情况,「ListView 会输出一个 paintExtent 为 701 ,cacheExtent 为 1026 的  SliverGeometry」。...image.png 这里面有几个关键的对象,其中: SliverFillRemaining :用于充满 Viewport 的剩余空间,在  NestedScrollView 里面就是充满 header...最后在 _NestedScrollCoordinator 的 drag 和 applyUserOffset 等方法里进行内外滚动的分配; image.png SliverPersistentHeader...image.png 「所以 Sliver 被固定住的原理,其实就是 Viewport 得到了它的 paintExtent 和 layoutExtent 并不为 0,所以会继续为这个 Sliver 绘制对应区域的内容...image.png 如上动图所示,可以看到 item0 并没有在橙色区域停止滑动,而是继续往上滑动,这就是因为作为 body 的列表不知道顶部有固定区域。

    1.1K30

    不一样角度带你了解 Flutter 中的滑动列表实现

    所以根据以上情况,ListView 会输出一个 paintExtent 为 701 ,cacheExtent 为 1026 的 SliverGeometry。...image 这里面有几个关键的对象,其中: SliverFillRemaining :用于充满 Viewport 的剩余空间,在 NestedScrollView 里面就是充满 header 之外的剩余空间...最后在 _NestedScrollCoordinator 的 drag 和 applyUserOffset 等方法里进行内外滚动的分配; ?...image 所以 Sliver 被固定住的原理,其实就是 Viewport 得到了它的 paintExtent 和 layoutExtent 并不为 0,所以会继续为这个 Sliver 绘制对应区域的内容...image 如上动图所示,可以看到 item0 并没有在橙色区域停止滑动,而是继续往上滑动,这就是因为作为 body 的列表不知道顶部有固定区域。

    2.2K51

    Material Design 实战 之 第六弹 —— 可折叠式标题栏(CollapsingToolbarLayout) & 系统差异型的功能实现(充分利用系统状态栏空间)

    其中, scroll表示CollapsingToolbarLayout会随着水果内容详情的滚动一起滚动, exitUntilCollapsed表示当CollapsingToolbarLayout随着滚动完成折叠之后就保留在界面上...> 我们知道ScrollView允许使用滚动的方式来查看屏幕以外的数据, 而NestedScrollView...由于CoordinatorLayout本身已经可以响应滚动事件了, 因此我们在它的内部就需要使用NestedScrollView或RecyclerView这样可以响应滚动事件的布局。...向上拖动水果图片,背景图上的标题会慢慢缩小,而且会产生错位偏移的效果,toolbar的位置和图片还会产生透明度的变化等等,效果十分炫酷。 ? ?...这是由于用户想要查看水果的内容详情,此时界面的重点在具体的内容上面,因此标题栏就会自动进行折叠,从而节省屏幕空间。 继续向上拖动,直到标题栏变成完全折叠状态,效果如图: ?

    2.3K40

    AppBarLayout学习

    ,NestedScrollView设置了layout_behavior属性,这样AppBarLayout里面的布局就可以跟着一起滚动,不过由于这里还没给AppBarLayout里面的scrollFlags...;不过需要注意的是,如果单独设置ImageView的为scroll,而不设置ToolBar,是没有效果的,因为ToolBar把ImageView给顶住了,只有下面的ScrollView会滚动。...,然后才是ScrollView滚动,而设置了enterAlwaysCollapsed之后,再配合minHeight属性,可以有不同的效果,先看xml设置: 滚动时,当ScrollView滚动顶部了,才继续滚动了。 snap snap是一个根据View在屏幕上显示范围进行调整的一个属性,看下效果其实就明白是怎么回事了。...后面会继续学习与CollapsingToolbarLayout一起的使用。

    1.1K30

    recycleview的优化_recyclerview原理

    ,但是第二个feed之 后的滚动是流畅的,因为这个时候RecyclerView已经有能重用的view了。...什么时候LayoutManager会从RecyclerView上分离呢,有两种情况:1)重新setLayoutManager()时,比如淘宝页面查看商品列表,可以线性查看,也可以表格形式查看,2)还有一种是...(false);//RecyclerView默认是setNestedScrollingEnabled(true),是支持嵌套滚动的,也就是说当它嵌套在NestedScrollView中时,默认会随着NestedScrollView...后记: RecyclerView的优化点肯定还有很多,坑也还有很多,这和应用的实际使用情况有很大关系。同时Google开发工程师也一直在优化RecyclerView,我们也要一直学习着。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    4.3K21

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

    在 xml 中通过 app:layout_behavior="@string/appbar_scrolling_view_behavior" 多说两句,有同学可能会想一定要是 NestedScrollView...而 enterAlways 这个标志与 scroll 配合使用可以改变这种行为,enterAlways 起作用时,当手指向下滑动时,Toolbar 会和 NestedScrollView 一起滑动,它们是同时滑动的...因为有 enterAlways 的存在,Toolbar 会和 NestedScrollView 一起响应滑动,但是又因为 enterAlwaysCollapsed 的存在,它的这种行为被限定了。...也就是说 snap 代表一种吸附的行为,当一个滑动事件结束后,Toolbar 会向最接近它的边缘自行滚动。那什么是最近的概念呢?比如向上滑动时,如果滑过了一半它就向上滚动,否则滚动回原来的地方。...CollapsingToolbarLayout 可以控制的子 View 滚动模式有 3 种: none 默认,无任何效果 Parallax 视差滚动 pin 固定某个 View 它通过 xml

    3.1K30

    CoordinatorLayout使用(四):和Toolbar的简单使用

    imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) - 简单的参考 ,一般也会写一个style,用的时候,继承即可 - ``` 会一直显示 ---- Toolbar和NestedScrollView联动 前面不能联动,是因为没有接收的behavior 我们在Toolbar外面添加一个 android.support.design.widget.AppBarLayout...这里app:layout_scrollFlags有一些可以选择的 具体每种是干什么的?...设置exitUntilCollapsed也就是为true的时候,任意向上的滚动都会让view(Toolbar)变为minHeight的高度可见,而不会全部消失 反之,不设置,也就是false,会全部消失...a5.gif 这里也比较简单, Toolbar添加app:layout_scrollFlags="scroll" 主体NestedScrollView添加app:layout_behavior="@string

    1.5K30

    ConstraintLayout2.0一篇写不完之嵌套滚动怎么滚

    在ConstraintLayout2.x中,有两种方式来实现嵌套滚动布局。...这种方案的布局结构如下: CoordinatorLayout --------AppBarLayout ----------------MotionLayout --------NestedScrollView...addOnOffsetChangedListener(this) } } ❝这两种方式没有本质上的不同,但是对于MotionEditor来说,如果使用自定义的MotionLayout,在非根布局下创建约束的时候会有一些问题(修改属性也会存在一些问题...MotionLayout --------MotionLayout --------NestedScrollView 我们可以发现,这里有两层MotionLayout,外层的MotionLayout,用于控制头部的伸缩布局...,设计思路不可谓不精,一旦你熟练掌握了MotionLayout的各种基础布局,那么即使再复杂的布局,也能分而治之。

    1.2K30

    踩坑记 | Flutter升级影响了NestedScrollView?

    嗨,我是哈利迪~最近有个bug排查了好几天,就是有个老页面因业务复杂度,使用了NestedScrollView+tab+多Fragment的结构(各Fragment里有RecyclerView,即存在嵌套滑动...他把比较新的androidx.fragment、lifecycle和annotation给拉过来了,导致androidx.core也从1.0.0变成了1.1.0,查阅core版本发布,在1.1.0的变更里有一行...: 添加了嵌套滚动改进;请参阅 NestedScrollingChild3 和 NestedScrollingParent3。...NestedScrollingParent3,NestedScrollingChild3, ScrollingView {} 可见,有两个接口从v2变成了v3,NestedScrollView类本身的实现也有一些改动...同时,引入了unConsumed值可以向彼此传递剩余距离,rv未消费完的距离,还可以交给nsv继续消费。

    97800

    再也不用担心面试官问RecycleView了

    预取机制,就是在滑动过程中,会把将要展示的一个元素提前缓存到mCachedViews中,所以滑动10个元素的时候,第11个元素也会被创建,也就多走了一次bindview方法。...之前说过解决滑动冲突的办法有两种:「内部拦截法和外部拦截法」。这里我提供一种内部拦截法,还有一些其他的办法大家可以自己思考下。...还有一个办法就是用Nestedscrollview代替ScrollView,Nestedscrollview是官方为了解决滑动冲突问题而设计的新的View。...所以直接替换成Nestedscrollview就能保证两者都能正常滑动了。...也就是说当它嵌套在NestedScrollView中时,默认会随着NestedScrollView滚动而滚动,放弃了自己的滚动。所以给我们的感觉就是滞留、卡顿。

    1.5K20
    领券