android - 使用两个AppBaLayout,滚动RecyclerView的时候
问题描述
我有活动布局结构,如:
<DrawerLayout>
<CoordinatorLayout>
<AppBarLayout>
<Toolbar app:layout_scrollFlags="scroll|enterAlways"/>
</AppBarLayout>
<fragment app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</CoordinatorLayout>
</DrawerLayout>
我有内部片段:
<CoordinatorLayout>
<AppBarLayout>
<include layout="@layout/some_view" app:layout_scrollFlags="scroll|enterAlways"/>
<AppBarLayout>
<RecyclerView app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</CoordinatorLayout>
样本布局:
我想在滚动 RecyclerView 上实现下一个案例:
- 折叠工具栏
- 折叠 some_view
- 开始滚动 RecyclerView
如果从片段中删除 AppBarLayout 并将 some_view 移动到第一个 AppBarLayout 中,则可以轻松完成。但是我有很多片段,每个片段都有不同的 some_view,我想把所有片段相关的东西放在一个地方。
我试图在 RecyclerView 的 onScrolled 侦听器中为 some_view 添加/删除滚动标志。我还尝试从片段中删除 AppBarLayout 并在 RecyclerView 的 onScrolled 侦听器中手动折叠 some_view,但它需要复杂的逻辑。
你能建议我如何以正确的方式实现我的滚动案例吗?
解决方案
推荐阅读
- typo3 - render() 和renderStatic() 有什么区别以及在TYPO3中编写ViewHelper时应该使用什么
- python - 在python中继承内置的`str`类
- vue.js - Vuetify SSR 分页
- javascript - 如何在 jquery 和 html 中为动态创建的列表项添加点击?
- java - 从 joda.Datetime 转换为 time.LocalDateTime 是正确的方法吗?
- reactjs - 如何从 componentDidMount() 组件中的操作文件调用 fetch 函数?
- python - 使用 BeautifulSoup 获取信息并使其可提取
- javascript - 比较从数据库中检索到的两个日期
- terraform - Terraform InvalidParameterCombination:数据库安全组只能与 VPC 数据库实例关联
- c++ - 运算符重载函数