作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如何在 ViewPager fragment 中滚动 RecyclerView 时独立折叠 Toolbar,而不影响 ViewPager 的折叠效果?
我的意思是,在 WhatsApp Android 中,如果您滚动 3 个主要列表中的任何一个,工具栏不会随内容移动,而是有一个独立的动画轴,非常流畅,不会插入内容 View .你可以看到我向上或向下移动了一点点,RecycleView 没有被 Toolbar 折叠动画插入,它独立移动:
我在 MainActivity 布局中有以下层次结构:
<CoordinatorLayout>
<AppBarLayout>
<Toolbar/>
<TabLayout/>
</AppBarLayout>
<ViewPager>
<!-- Fragments with RecyclerView -->
</ViewPager>
</CoordinatorLayout>
activity_main.xml
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|snap|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:clickable="true"
app:layout_behavior="ScrollingFABBehavior"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>
fragment 的内容是一个 RecyclerView:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="fragments.ConversationsFragment">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
但是当我滚动 RecyclerView 时,如果我在中途停止,工具栏会突然向上或向下插入 fragment ,而不是像 WhatsApp 一样独立移动动画:
在这个例子中它更加极端:
如果我不添加 snap 作为滚动标志,工具栏会在中途停止或推送 fragment ,具体取决于我滚动的距离。
app:layout_scrollFlags="scroll|snap|enterAlways"
有什么方法可以使用 CoordinatorLayout 实现吗?如果没有,我们将不胜感激。
最佳答案
使用NestedScrollView实现类似whatsapp,
<android.support.v4.widget.NestedScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</android.support.v4.widget.NestedScrollView>
关于android - 如何在不推送内容的情况下折叠 AppBarLayout 动画,类似于 WhatsApp Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35874842/
我是一名优秀的程序员,十分优秀!