如果不需要,防止CollapsingToolbarLayout崩溃

sta*_*ken 25 android android-support-library android-toolbar android-collapsingtoolbarlayout

使用:

compile 'com.android.support:design:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:cardview-v7:23.0.0'
compile 'com.android.support:recyclerview-v7:23.0.0'
Run Code Online (Sandbox Code Playgroud)

随着Cheesesquare项目的更新.

进入奶酪的细节,我删除2张牌(只有一张).有没有办法防止显示空白空间的工具栏折叠?

在此输入图像描述

Dmi*_*Arc 30

要在Cheesesquare示例中实现此类行为,只需android:layout_height将NestedScrollView的param 修改为wrap_content.如果内容足够小以适应屏幕,它将阻止按内容滚动.

要防止滚动,CollapsingToolbarLayout您应该以编程方式将layout_scrollFlags参数设置为AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP值.

这里描述了如何做到这一点.

  • layout_scrollFlags 不起作用。使用此解决方法禁用 CollapsingToolbarLayout 滚动。/sf/answers/2852549521/ 这是真正的方法并且确实有效!) (3认同)

Vis*_*nav 5

您可以使用以下代码:

   public static void stopScroll() {
    AppBarLayout.LayoutParams toolbarLayoutParams = (AppBarLayout.LayoutParams) collapsing_toolbar.getLayoutParams();
    toolbarLayoutParams.setScrollFlags(0);
    collapsing_toolbar.setLayoutParams(toolbarLayoutParams);

    CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appbar.getLayoutParams();
    appBarLayoutParams.setBehavior(null);
    appbar.setLayoutParams(appBarLayoutParams);
}

public static void startScroll() {
    AppBarLayout.LayoutParams toolbarLayoutParams = (AppBarLayout.LayoutParams) collapsing_toolbar.getLayoutParams();
    toolbarLayoutParams.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
    collapsing_toolbar.setLayoutParams(toolbarLayoutParams);

    CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appbar.getLayoutParams();
    appBarLayoutParams.setBehavior(new AppBarLayout.Behavior());
    appbar.setLayoutParams(appBarLayoutParams);
}
Run Code Online (Sandbox Code Playgroud)