如何在appbar快照时使Recycler View不滚动

pen*_*Dev 9 android appbar android-coordinatorlayout

我已经制作了像这样的对齐应用栏:

在此输入图像描述

请注意,当滚动条保留在中间时(即标题是一半可见,则应用栏会自动捕捉)

在谷歌播放的情况下,这是按钮的样子:

在此输入图像描述

现在,我想让快照像谷歌播放中的那样工作.这是在发生快照时,只有应用栏应该捕捉并且回收者视图不应该移动.如果该解决方案也支持前棒棒糖设备会更好.

谢谢!

Mic*_*rte 6

查看我的库可伸缩工具栏

你必须添加它 build.gradle

compile 'it.michelelacorte.retractabletoolbar:library:1.0.0'
Run Code Online (Sandbox Code Playgroud)

比你MainActivity.java使用RecyclerView和这个:

RetractableToolbarUtil.ShowHideToolbarOnScrollingListener showHideToolbarListener;
recyclerView.addOnScrollListener(showHideToolbarListener = new RetractableToolbarUtil.ShowHideToolbarOnScrollingListener(toolbar));

if (savedInstanceState != null) {
            showHideToolbarListener.onRestoreInstanceState((RetractableToolbarUtil.ShowHideToolbarOnScrollingListener.State) savedInstanceState
                    .getParcelable(RetractableToolbarUtil.ShowHideToolbarOnScrollingListener.SHOW_HIDE_TOOLBAR_LISTENER_STATE));
}
Run Code Online (Sandbox Code Playgroud)

这是效果:

在此输入图像描述

编辑:

从23.1.0设计库开始,您可以|snap向ToolBar布局添加属性:

       <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_scrollFlags="scroll|enterAlways|snap />
Run Code Online (Sandbox Code Playgroud)

它应该或多或少是你正在寻找的.


god*_*ess 2

我找到了一个在我的项目中运行良好的解决方案。它由 2 种行为组成,一种用于 AppBarLayout,另一种用于滚动容器。您可以在 Github 上找到它:appbar-snap-behavior

安装它非常简单:

compile "com.github.godness84:appbar-snap-behavior:0.1.1"
Run Code Online (Sandbox Code Playgroud)

maven { url "https://jitpack.io" }请记住在存储库末尾添加根 build.gradle:

allprojects {
        repositories {
            ...
            maven { url "https://jitpack.io" }
        }
}
Run Code Online (Sandbox Code Playgroud)

然后:

  1. 添加app:layout_behavior="com.github.godness84.appbarsnapbehavior.AppBarSnapBehavior"到您的 AppBarLayout
  2. 使用app:layout_behavior="com.github.godness84.appbarsnapbehavior.ScrollingViewBehavior"到你的滚动容器中。

不幸的是,由于 AppBarLayout 的默认行为被替换,某些功能不再可用(例如AppBarLayout.setExpanded()),但在正常情况下它可以工作!尝试一下并告诉我。