首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有滚动行为的AppBarLayout /滚动/大高度AppBarLayout上的可选/粘滞视图导致怪异滚动

具有滚动行为的AppBarLayout /滚动/大高度AppBarLayout上的可选/粘滞视图导致怪异滚动
EN

Stack Overflow用户
提问于 2022-06-24 11:36:07
回答 2查看 428关注 0票数 6

为了更好地了解我的处境,我的现状视频:

视频

RecyclerView上面的所有东西都在AppbarLayout里面

具有类似行为的reddit应用程序示例:

视频

目标:

1-从上到下按顺序实现滚动屏幕的视图。

代码语言:javascript
运行
复制
a)[several views that need to scroll top until gone, their combined height is several screen sizes]  
b)[view that scrolls until it reaches screen top and then sticks there]  
c)[RecyсlerView that scrolls beneath view that sticks on screens top] or [ViewPager with fragments containing RecyclerViews]

2-需要与包含RecyclerViewfragments和包含RecyclerViewsViewPager一起工作。

3-保留RecyclerViews回收利用。

到目前为止我的解决方案:

协调器布局,AppBarLayout与appbar_scrolling_view_behaviorscroll|exitUntilCollapsed

基本上,将RecyclerView上的所有视图都设置为AppBarLayout,并将属性scroll|exitUntilCollapsed设置为需要滚动的视图,而不是将任何滚动属性设置为需要保持不变的视图。

解释:

我想将RecyclerViewmultiple view types一起使用,并将上面的ab组中的views作为不同的ViewHolders处理,并将它们放在提供给RecyclerViewlist01索引处。

但没有找到任何解决方案,如何使ViewHolder粘到屏幕顶部,同时保持其可点击性(交互性)。所有的解决方案都只是画了一个你根本无法沟通的view

我匆忙地将CoordinatorLayoutAppBarLayout一起使用,并设置了scroll behaviorscroll flags

问题:

当初始滚动手势发生在AppBar中,第二个滚动手势出现在子视图中(RecyclerViewRecyclerViewViewPager中)或相反的顺序时,滚动体验是非常奇怪、滞后和抖动的。

如果发现自定义行为实现和它摆脱了抖动,但仍然存在一些不一致的滚动经验。

问题:

我不是在问如何修复当前解决方案中的滚动。我确信没有解决方案,因为AppbarLayout一开始就不应该有整个屏幕的height。所以我没有发布强调滚动错误的视频。

我能完全抛弃CoordinatorLayout和AppBarLayout,实现预期的滚动吗?我花了几个小时(如果不是数日)来寻找实现这个T_T的方法。

如果你需要更多的信息,请告诉我。

EN

回答 2

Stack Overflow用户

发布于 2022-06-29 06:32:36

TL;DR;

也许这个图书馆能帮上忙。它有可点击的带有粘性头的RecyclerView。https://github.com/davideas/FlexibleAdapter

TL末端;DR;

个人建议Android是另一个Linux发行版,它具有预先存在的UI小部件。假设您获得了没有UI的Linux发行版,并且在使用Android作为参考时必须自己实现它们。最好的方法是阅读AOSP源代码和相关的Github projects.However的源代码,任务非常艰巨,所以首先您必须将它们划分为可管理的块。

你要处理的是滚动和触觉的逻辑。滚动很困难,尤其是嵌套滚动Android有3次NestedScrollingChild和NestedScrolling父循环。它在BottomSheets和所有其他地方与CoordinatorLayoutBehaviour一起使用,在NumberPickers中,在ViewPagers中,在RecyclerViews中,在任何地方都有一个卷轴。

观看谈论触摸处理/回收查看由戴夫史密斯,自定义观看视频由千木成龙,其他相关视频。关于嵌套滚动的文章:https://www.androiddesignpatterns.com/2018/01/experimenting-with-nested-scrolling.html

最后阅读相关Github项目的源代码,并对它们进行实验:https://github.com/frogermcs/InstaMaterial

https://github.com/trafi/anchor-bottom-sheet-behavior

https://github.com/ZieIony/Carbon

https://github.com/AndroidDeveloperLB/LollipopContactsRecyclerViewFastScroller

当你寻找一个较小的包含性问题时,你会发现很多其他问题。

这需要时间不是一天,一周,而是几个月。不过,最后您将了解View如何在Android上工作,以及它的局限性是什么。

票数 1
EN

Stack Overflow用户

发布于 2022-06-29 01:49:28

Reddit应用程序行为不同的原因是它似乎使用了WebView;这是CSS滚动行为。但是,可以嵌套XML或相同的组合组件。这可能不会封装在AppBarLayout中,但肯定会嵌套到ViewPager2的实际内容区域中。

假定这种结构:

代码语言:javascript
运行
复制
Fragment
    ViewPager2

        Fragment
            CoordinatorLayout
                AppBarLayout <-- maybe, maybe not
                    CollapsingToolbarLayout <-- most definitely
                        Toolbar
                    NestedScrollView <-- scroll happens here
                        RecylerView

NestedScrollView app:layout_behaviorCollapsingToolbarLayout的滚动标志控制这一点。我不确定那里是否需要AppBarLayout,因为CollapsingToolbarLayout驻留在包appbar中。请考虑这两种可能性。使用NestedScrollView包装什么很重要(它不是父FragmentViewPager2驻留在其中)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72743500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档