当中间有其他几层视图时,滚动时自动隐藏工具栏
Auto-hiding toolbar on scroll, when there are several other layers of views in-between
我希望我的 activity 的 Toolbar
能够随着给定滚动视图的增长而平滑地滚动出来,然后在用户向下滚动时平滑地滚动回来。 IE。来自例如的基本 scroll|enterAlways
行为this 回答。
但是,我的布局在包含 Toolbar
的 CoordinatorLayout
和应该驱动一切的 ScrollView
之间有一些层。与 this answer 不同,我想要以下布局:
CoordinatorLayout
AppBarLayout
Toolbar
LinearLayout [vertical]
LinearLayout [vertical]
ImageView
ScrollView
看似多余的两个LinearLayout
是为了控制背景色; ImageView
和 ScrollView
的想法是我的 UI 应该是这样的:
+------------+
|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
中的事物)。
上述行为我可以通过设置获得
app:layout_scrollFlags="scroll|enterAlways"
上 Toolbar
为标准。但是,如果我随后开始向下拖动 ScrollView
,则 Toolbar
不会返回。事实上,我还没有找到任何方法让 Toolbar
在它滚出后恢复。
事实证明我需要使用 NestedScrollView
,因为,与我建议的名称不同,它不仅用于将 ScrollView
嵌套到其他 ScrollView
中,而且将 ScrollView
嵌套在其他容器中:
NestedScrollView
is just like ScrollView
, but it supports acting
as both a nested scrolling parent and child on both new and old versions of Android.
我希望我的 activity 的 Toolbar
能够随着给定滚动视图的增长而平滑地滚动出来,然后在用户向下滚动时平滑地滚动回来。 IE。来自例如的基本 scroll|enterAlways
行为this 回答。
但是,我的布局在包含 Toolbar
的 CoordinatorLayout
和应该驱动一切的 ScrollView
之间有一些层。与 this answer 不同,我想要以下布局:
CoordinatorLayout
AppBarLayout
Toolbar
LinearLayout [vertical]
LinearLayout [vertical]
ImageView
ScrollView
看似多余的两个LinearLayout
是为了控制背景色; ImageView
和 ScrollView
的想法是我的 UI 应该是这样的:
+------------+
|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
中的事物)。
上述行为我可以通过设置获得
app:layout_scrollFlags="scroll|enterAlways"
上 Toolbar
为标准。但是,如果我随后开始向下拖动 ScrollView
,则 Toolbar
不会返回。事实上,我还没有找到任何方法让 Toolbar
在它滚出后恢复。
事实证明我需要使用 NestedScrollView
,因为,与我建议的名称不同,它不仅用于将 ScrollView
嵌套到其他 ScrollView
中,而且将 ScrollView
嵌套在其他容器中:
NestedScrollView
is just likeScrollView
, but it supports acting as both a nested scrolling parent and child on both new and old versions of Android.