CoordinatorLayout+AppBarLayout+RecyclerView踩过的坑

2023-12-23 06:38

本文主要是介绍CoordinatorLayout+AppBarLayout+RecyclerView踩过的坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CoordinatorLayout+AppBarLayout+RecyclerView踩过的坑

需求就一句话:实现上滑隐藏菜单栏,下滑显示菜单栏。谁知道我能在这里踩这么多坑,哭

最开始的想法是,监听recyclerview滑动,向上滑动就隐藏菜单栏,下滑就显示菜单栏

那么问题来了,有抖动!!!

天真的我设了个阈值,滑动距离超过阈值时才隐藏/显示

但是,还有一个问题:由于view是突然显示/隐藏的,后面的view在屏幕上的位置会发生变化,看起来就是整个页面都在闪烁......

经过查阅资料,发现 coordinatorlayout+appbarlayout+recyclervie可以联动实现appbarlayout上滑隐藏,下滑显示。

很开心啊,于是开心的用上了

然而,还是有新的问题:

  • 在页面可以展示得下recyclerview时,recyclerview居然还可以滑动!!!

    原谅菜鸡的我直接懵逼了,这是什么人间迷惑???后来去研究了一下,在HeaderScrollingViewBehavior中,recyclerview计算高度的时候还加上了AppBarLayout的可以滑动的距离,问题大概出在这里吧

    没办法,只能自己去判断当前页面是否可以完全展示,可以的话禁止recyclerview滑动

    但是这个判断吧,也有点超出我这个菜鸟的能力范围了

    怎么说呢,我开始想,这还不简单吗,判断第一个完全显示的item和最后一个完全显示的itempos不就好了吗,但还真不行,大概recyclerviewlayoutmanager不是线程安全的吧,总获取不到正确的数据,我只是个菜鸟,这是什么人间惨剧

    好了,我去找大佬求助了

    大佬十分钟就解决了困扰我一上午的问题,大概就是有个类ViewTreeObserver,可以获取到线程安全的manager???反正还在迷惑中,打算先把coordinatorlayout搞清楚了再去看

  • wrap_content的问题

    如果recyclerviewcoordinatorlayout都设置为wrap_content,在可以完全展示recyclerview时会出现这样一个现象:coordinatorlayout的高度是recyclerview的高度,在appbarlayout显示时,recyclerview有部分会被挡住

    行吧,那就match_parent

  • appbarlayout显示不完全

    原来设置的是app:layout_scrollFlags="scroll|enterAlways",但是,我发现,在可以滑动时,我把appbarlayout滑到一半,然后把recyclerview切换成不可以滑动的选项(切换数据或者切换列数),这个时候recyclerview不可以滑动对吧,那么appbarlayout就只能显示一半

    机智如我,加上了snap,也就是app:layout_scrollFlags="scroll|enterAlways|snap"

学习的时候都是看着,啊,这样用就可以了啊,好的,我会了;实际用的时候,为什么会这样?这不科学!哭了

这篇关于CoordinatorLayout+AppBarLayout+RecyclerView踩过的坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/527071

相关文章

自定义recyclerView实现时光轴效果

时光轴效果在很多app上都有出现,例如淘宝中快递的跟踪,本文将使用recyclerView实现时光轴效果,我们会到自定义控件,首先先看一下效果图: 接下来是步骤分析 1自定义属性 这个大家应该都了解了,根据我们之前的分析,直接在attrs.xml中进行声明 <declare-styleable name="TimeLine"><attr name="beginLine" f

Android RecyclerView卡顿

Android RecyclerView卡顿的原因可能包括以下几点: 数据加载和渲染耗时: 当列表项较多或者数据量庞大时,如果在主线程中进行数据加载和布局渲染,会导致主线程阻塞,从而造成滑动卡顿。例如,在滚动过程中需要加载大量数据或进行复杂的数据绑定操作,会导致滚动的卡顿。图片加载耗时: RecyclerView中常常会出现图片加载的场景,如果图片加载不合理,比如直接加载原始图片或者在主线程加载

RecyclerView横向滑动与ViewPager冲突问题

问题出现场景: TabLayout + ViewPager + Fragment,Fragment中包含一个横向滑动的RecyclerView,出现了左右滑动RecyclerView时会与ViewPager冲突。 解决思路: 手指触碰到RecyclerView时禁止ViewPager滑动,手指离开时恢复。 解决方法: 1、重写ViewPager使其滑动事件变为可以控制的,代码: /**

Android RecyclerView原理语法和用法

RecyclerView 是 Android 中用于显示大量数据的高级视图组件。它是 ListView 的改进版,具有更高的性能和灵活性。以下是关于 RecyclerView 的详细介绍,包括其原理、语法、优缺点和使用方法。 原理 RecyclerView 的核心原理是通过视图复用来提高性能。当用户滚动列表时,RecyclerView 只会创建和绑定当前可见的项,而不是为每个数据项都创建一个新

RecyclerView添加头和尾

第一步实现继承RecyclerView.ViewHolder 的子类CommonViewHolder public class CommonViewHolder extends RecyclerView.ViewHolder {public TextView title_textview;public CommonViewHolder(@NonNull View itemView) {

Android RecyclerView开源框架(下拉刷新、底部加载更多)

http://blog.csdn.net/jdsjlzx/article/details/50462247 http://blog.csdn.net/jdsjlzx/article/details/50462247  Android RecyclerView开源框架(下拉刷新、底部加载更多) 2016-01-05 14:18  7380人阅读  评论(8)  收藏  举报

Android基础-RecyclerView的优点

一、引言 在Android开发中,RecyclerView是一个强大而灵活的控件,用于展示大量数据集合的视图。相比于传统的ListView和GridView,RecyclerView提供了更高的性能、更多的布局选择和更丰富的交互体验。本文将详细阐述RecyclerView的功能作用以及它的诸多优点。 二、RecyclerView的功能作用 数据展示:RecyclerView最基本的功能就是展

Android中的RecyclerView的使用(一)

从Android5.0开始,加入了一个RecyclerView控件,为了兼容,这个类是在v7里面的,可以兼容低版本哦!        什么是RecyclerView,从名字中我们就知道了这个控件是一个可以复用的View,而且它仅仅就关心复用,它不关心Item是不是显示在正确的位置上面,也不关心条目之间是不是有分隔,也不关心item增加和删除的动画,仅仅就关心条目的复用! Recy

自定义RecyclerView实现垂直滑动的ViewPager

android原生的ViewPager默认水平方向滑动翻页的。突然,项目里有个签到需求要做成上下滑动翻页。我的第一反应是应用ViewPager,可是它只适用于水平滑动的情景,可不可以继承ViewPager重写它的onTouchEvent方法,把检测水平滑动的手势改成垂直滑动手势呢?答案是肯定的,这种做法可以实现上下翻页的功能,但是快速滑动时会导致页面错乱,而且fragment需要依赖activit

NestedScrollView嵌套RecyclerView导致RecyclerView复用失效的原因?

一、问题描述 使用NestedScrollView嵌套RecyclerView导致RecyclerView复用失效,RecyclerView会将所有数据一次性全部加载。 布局文件如下: <androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:ap