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的itemView的点击效果

1,需要在 itemView 的布局 根节点上添加  android:clickable="true" 2、或者通过代码实现 @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {  ((ViewHolder)viewHolder).textView

ScrollView嵌套RecyclerView再嵌套RecyclerView导致的布局展示不完整问题

背景:页面布局,最外层有个ScrollView,然后里面有个RecyclerView,然后每个RecyclerView的item都是一个RecyclerView 异常:页面展示不完整,最底下的Item 展示一半,在往上滑就滑不动了   解决: // 每一个item渲染完后重新计算外层recyclerview高度// 因为外层的recyclerview是先渲染的,渲染时 内部recyc

AppBarLayout.OnOffsetChangedListener的使用

如果没听说过AppBarLayout.OnOffsetChangedListener,那么就先看这里: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0616/3052.html 我在项目中的使用: Java代码   import android.content.Context;  import

【项目FJU】使用SwipeRefreshLayout+RecyclerView制作下拉刷新上拉加载更多

效果截图 https://github.com/ydslib/Jianshu/tree/develop 需要用到的知识 setColorSchemeResources:设置下拉刷新进度条的颜色setOnRefreshListener:设置下拉刷新监听android:overScrollMode:设置滑动到边缘时无效果模式ContentLoadingProgressBar:内容加载进度条,继承

ListView和RecyclerView比较

1.ViewHolder 作用: View复用 Listview: 自己定义 RecyclerView: RecyclerView.ViewHolder则变成了必须 2.LayoutManager 作用: 布局管理器 Listview: 官方推荐只做垂直滚动功能 RecyclerView: LinearLayoutManager,可以支持水平和竖直方向上滚动的列表。 S

RecyclerView和CardView的使用以及注意

转载请注明出处 作者:AboutJoke ( http://blog.csdn.net/u013200308 ) 原文链接:http://blog.csdn.net/u013200308/article/details/51244289 距离RecyclerView和CardView的出现已经很久了,网上也有很多关于这方面的博客。因为最近自己在项目中用到了Material Design设计规

解决ScrollView 嵌套RecyclerView出现的问题

ScrollView 嵌套RecyclerView会使RecyclerView列表显示不全,很多人都把ScrollView替换成NestedScrollView,或者重写RecyclerView。 其实使用ScrollView并且不用重写RecyclerView也是可以实现的,那就是在RecyclerView外面再嵌套一层布局就可以了。像下面这样: <ScrollViewand

使用RecyclerView实现item拖拽变换位置重新排序

小知识解决大问题,问题处理+经验分享,大家好,我是时代新人!今天给大家分享一个小例子,请往下看: 今天用RecyclerView实现一个拖拽交换位置,和编辑删除的功能。先来个效果图看一下 1、定义一个ItemTouchHelperAdapter接口 import androidx.recyclerview.widget.RecyclerView;/*** Created by WJY.*

解决RecyclerView条数显示不全问题

小知识解决大问题,问题处理+经验分享,大家好,我是时代新人!今天给大家分享一条小经验,请往下看: 多个RecyclerView同时使用的时候,比如线性垂直排布三个RecyclerView,那么会出现一个问题就是第一个RecyclerView的数据条数显示不全,只能显示一屏的内容,比如有10条数据,一屏只能显示5条,那么第一个RecyclerView就只显示5条数据,然后就显示下一个Recycle

ScrollView嵌套RecyclerView 问题

在滑动的时候,拦截ScrollView的Touch事件: 自定ScrollView: package com.ejamad.information.ui.widget;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import androi