gpt4 book ai didi

android-recyclerview - 具有 CollapsingToolbarLayout 的垂直 Recyclerview 中的水平滚动 Recyclerview

转载 作者:行者123 更新时间:2023-12-01 17:33:15 27 4
gpt4 key购买 nike

我正在构建一个应用程序,它使用ViewPager2在页面之间水平滚动,每个页面都有一个垂直滚动的内容RecyclerView,其中每个列表的第一个位置都有一行水平滚动小部件,例如附加到寻呼机指示器类型小部件的另一个 RecyclerViewViewPager2,如下图所示。

父 ViewPager2 是 CoordinatorLayout 的子级,当 RecyclerView 垂直滚动时,它会处理折叠顶部内容。然后,此 ViewPager2 会膨胀水平滚动的片段。所以我们有父布局:

-- CoordinatorLayout 
-- FrameLayout - has appbar scrolling behavior
-- ViewPager2
-- AppBarLayout
-- CollapsingToolbarLayout
-- ImageView - background
-- Toolbar
-- ConstraintLayout - Holds title and date

父ViewPager2子fragment的布局:

-- FrameLayout
-- RecyclerView
-- Pager Indicator

内容RecyclerView的第一行具有相同的布局:

-- FrameLayout
-- RecyclerView
-- Pager Indicator

Unscrolled state

您可以从上面的屏幕截图中看到,首次加载时,RecyclerViewAppBarLayout 重叠,这是正确的行为。我向 RecyclerView 的父布局添加了负 marginTop 来实现此效果。我正在使用 AppBarLayout.OnOffsetChangedListener 跟踪 AppBarLayout 偏移量变化,并且当用户向上滚动时,我会减少或增加这个负边距,以使列表在 AppBarLayout 下进行动画处理。

我面临的问题是,如果我从列表中的第一项开始垂直滚动,则 AppBarLayout 不会被触发以开始折叠其内容,因此内容会过早地结束在 AppBarLayout。请参阅以下屏幕截图:

RecyclerView incorrect scroll

我希望 AppBarLayout 内容在我启动时立即开始向上滚动 内容 RecyclerView 滚动,即使它是从第一个位置启动的。似乎第一个项目的 RecyclerView 没有提醒 AppBarLayout 开始折叠。如果我从 RecyclerView 中的其他项目开始滚动,则会观察到正确的行为。如果我从第一行向上拖动并按住,那么也会观察到该错误。

我想要实现的行为的一个很好的例子是 Google 新闻应用程序,其中有一个新闻部分的选项卡。以下是我的期望:

Correct vertical scroll animation

最佳答案

结果证明解决方案很简单。如果您有嵌套的 RecyclerView 或类似容器,那么您必须使用:

RecyclerView.setNestedScrollingEnabled(false)

关于android-recyclerview - 具有 CollapsingToolbarLayout 的垂直 Recyclerview 中的水平滚动 Recyclerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57875162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com