是否应该设置为应用栏布局兄弟姐妹的父级还是其兄弟姐妹中的第一个可滚动视图?
和Android 的材料设计, 有意见让我们根据其周围环境来处理布局的行为,其中之一是协调器布局, 作为这个 CodePath 指南提到:
CoordinatorLayout 扩展了完成许多 Google Material Design 滚动效果的能力。
我现在感兴趣的是:
- 扩展或收缩工具栏或标题空间以为主要内容腾出空间。
所以,我们会使用应用栏布局与一个工具栏和app:layout_scrollFlags
一套和另一套视图组兄弟姐妹应用栏布局和app:layout_behavior
。
我的问题是:我们应该把它放在哪个 ViewGroup (或者也许是 View)中app:layout_behavior
?
到目前为止,我已经尝试过(他们都有worked,并且它们都是 AppBarLayout 的兄弟):
滚动视图
可滚动视图中的第一个 ViewGroup
ViewGroup 内的 ScrollView
而这个不起作用:
- 没有可滚动视图子级的 ViewGroup。
网上有多个示例,但没有一个真正说明应该将其放在哪里,例如:
http://www.ingloriousmind.com/blog/quick-look-on-the-coordinatorlayout/ https://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout https://developer.android.com/training/basics/firstapp/building-ui.html https://www.bignerdranch.com/blog/becoming-material-with-android-design-support-library/
答案
Check this link: https://developer.android.com/reference/android/support/design/widget/AppBarLayout.html
AppBarLayout
还需要一个单独的滚动兄弟以便知道何时滚动。AppBarLayout.ScrollingViewBehavior
班级,meaning that you should set your scrolling view’s behavior to be an instance ofAppBarLayout.ScrollingViewBehavior
。
他们提到了这一点,应该是View
这将显示在AppBarLayout
像这样:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<!-- Your scrolling content -->
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent">
<android.support.v7.widget.Toolbar
...
app:layout_scrollFlags="scroll|enterAlways"/>
<android.support.design.widget.TabLayout
...
app:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
My question is: 具体在什么方面
ViewGroup
(或者可能View
)我们应该这样说吗app:layout_behavior
?
并在此链接中:http://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout
接下来,我们需要定义an association between 这
AppBarLayout
和the View that will be scrolled 。app:layout_behavior
到一个RecyclerView
或任何其他能够嵌套滚动的视图,例如NestedScrollView
。@string/appbar_scrolling_view_behavior
that maps toAppBarLayout.ScrollingViewBehavior
, which is used to notify theAppBarLayout
when scroll events occur on this particular view。