Mat*_*teo 12 android custom-scrolling android-coordinatorlayout android-appbarlayout
我试图获得这种效果,如果用户滚动RecyclerView某个布局与回收器一起向上滚动并消失在后面Toolbar.
使用可以获得类似的行为CoordinatorLayout,这可以通过设置来实现
app:layout_behavior="@string/appbar_scrolling_view_behavior"
Run Code Online (Sandbox Code Playgroud)
在上述Recycler,并做
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)
此外,如果我将第二个孩子放入其中AppBarLayout并设置app:layout_scrollFlags为它,则获得的效果是相同的,两个布局都与Recycler一起滚动.
我想要实现的是保持第一个孩子(工具栏)固定在位,让第二个孩子(a LinearLayout)滚动并隐藏在工具栏后面.不幸的是我无法达到这种行为.
没有使用第三部分库可以吗?提前致谢,对不起我的英语.
小智 7
最后,我想出了一种方法来实现这种行为,通过在 LinearLayout 中包含 CoordinatorLayout 并使第二个孩子(LinearLayout)成为第一个,通过将工具栏移动到外部(根)级别
之前的层次结构:
<CoordinatorLayout>
<AppBarLayout>
<ToolBar>
<LinerarLayout>
Run Code Online (Sandbox Code Playgroud)
之后的层次结构:
<LinearLayout>
<ToolBar>
<CoordinatorLayout>
<AppBarLayout>
<LinearLayout>
Run Code Online (Sandbox Code Playgroud)
一个例子:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="48dp" />
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorSecondaryLight"
android:orientation="vertical"
app:layout_scrollFlags="scroll"/>
</com.google.android.material.appbar.AppBarLayout>
.
.
.
.
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
希望有帮助!
| 归档时间: |
|
| 查看次数: |
654 次 |
| 最近记录: |