android - 当中间有几个其他视图层时,滚动时自动隐藏工具栏
问题描述
我希望我的活动Toolbar
随着给定滚动视图的增长而平滑滚动,然后在用户向下滚动时平滑滚动回来。即scroll|enterAlways
来自例如this answer的基本行为。
CoordinatorLayout
但是,我的布局在包含Toolbar
和ScrollView
应该驱动所有内容之间有一些层。与此答案不同,我想要以下布局:
CoordinatorLayout
AppBarLayout
Toolbar
LinearLayout [vertical]
LinearLayout [vertical]
ImageView
ScrollView
看似多余LinearLayout
的两个是用于背景色控制的;和的想法ImageView
是ScrollView
我的用户界面应该是这样的:
+------------+
|TOOLBAR =|
+------------+
| |
| IMAGE |
| |
|111111111111|
|222222222222|
|333333333333|
|444444444444|
+------------+
然后应该滚动到
+TOOLBAR----=+
+------------+
| |
| IMAGE |
| |
|111111111111|
|222222222222|
|333333333333|
|444444444444|
|555555555555|
+------------+
并进一步
+------------+
| |
| IMAGE |
| |
|111111111111|
|222222222222|
|333333333333|
|444444444444|
|555555555555|
|666666666666|
+------------+
然后到
+------------+
| |
| IMAGE |
| |
|222222222222|
|333333333333|
|444444444444|
|555555555555|
|666666666666|
|777777777777|
+------------+
(用数字表示 中的事物ScrollView
)。
我可以通过设置
as 标准app:layout_scrollFlags="scroll|enterAlways"
来获得上述行为。Toolbar
但是,如果我然后开始向下拖动ScrollView
,Toolbar
则不会回来。事实上,Toolbar
一旦它滚动出去,我还没有找到任何方法让它回来。
解决方案
事实证明我需要使用NestedScrollView
,因为不像它的名字向我建议的那样,它不仅用于ScrollView
将 s 嵌套到其他ScrollView
s 中,还用于将 a 嵌套ScrollView
在其他容器中:
NestedScrollView
就像ScrollView
,但它支持在新旧版本的 Android 上同时充当嵌套滚动父项和子项。
推荐阅读
- sql - 如果一个值是字符串,则在 SQL 中过滤掉整个 ID
- android - 我可以为具有相同 kaystore 不同包名称的多个客户端签署相同的应用程序吗?
- haskell - 分级偏序(从拓扑排序开始)
- node.js - 开发使用远程服务器 API 的 React 应用程序
- sql - 2列之间的SQL日期时间差
- xcode - Xcode 10.1 - HIgh Sierra - RealmSwift 构建失败并出现大量错误
- python - Python:未定义名称“RandomOverSampler”
- antivirus - 当我们在 VS Code 中运行我们的程序时,mcAfee 防病毒软件会立即删除 .exe 文件
- apache-flink - Flink Job 子任务需要几分钟才能启动,而 source 会立即启动
- java - Android Studio - Java:ACTION_OPEN_DOCUMENT 导致 Uri 无效