折叠工具栏在轻弹时向下滚动

时间:2017-11-07 21:45:59

标签: android android-layout scroll toolbar android-collapsingtoolbarlayout

当我执行非常快速的混蛋时,我遇到了CollapsingToolbarLayout的问题。 同样的事情发生在隐藏appBar& tablayout。

我需要工具栏隐藏在滚动和CollapsingToolbar上才能折叠。当滚动不那么快时,它工作正常。

但是当它很快时 - 似乎appBar在此之后崩溃并扩展。但它没有扩大回来。

请看一下视频。

CollapsingToolbarLayout

appBar & tablayout

似乎this回答是我需要的,但它不起作用。

我的CollapsingToolbarLayout的xml:

    <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:background="@color/colorLightGray"
    android:clickable="true"
    android:fitsSystemWindows="true"
    android:orientation="vertical"
    >
  <android.support.design.widget.AppBarLayout
      android:id="@+id/app_bar_layout"
      android:layout_width="match_parent"
      android:layout_height="200dp"
      android:fitsSystemWindows="true"
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
      >
    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        android:minHeight="?attr/actionBarSize"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="48dp"
        app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
        >
      <ImageView
          android:id="@+id/ivSectionCover"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:fitsSystemWindows="true"
          android:scaleType="centerCrop"
          app:layout_collapseMode="parallax"
          />
      <ImageView
          android:layout_width="match_parent"
          android:layout_height="130dp"
          android:layout_gravity="bottom"
          android:alpha="0.5"
          android:scaleType="fitXY"
          app:layout_collapseMode="pin"
          app:srcCompat="@drawable/background_gradient"
          />
      <android.support.v7.widget.Toolbar
          android:id="@+id/toolbar"
          android:layout_width="match_parent"
          android:layout_height="?attr/actionBarSize"
          app:layout_collapseMode="pin"
          app:layout_scrollFlags="scroll|enterAlways"
          app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
          />
    </android.support.design.widget.CollapsingToolbarLayout>
  </android.support.design.widget.AppBarLayout>
  <TextView
      android:id="@+id/tvEmptyList"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:text="@string/books_empty_list"
      android:textColor="@color/colorGray"
      android:textSize="18sp"
      android:visibility="gone"
      />
  <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_marginBottom="?attr/actionBarSize"
      android:clickable="true"
      app:layout_behavior="@string/appbar_scrolling_view_behavior"
      >
    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true"
        android:fillViewport="true"
        >
      <RelativeLayout
          android:id="@+id/rlContent"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:clickable="true"
          >
        <android.support.v7.widget.RecyclerView
            android:id="@+id/rvBooksSection"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="4dp"
            android:layout_marginLeft="4dp"
            android:layout_marginRight="4dp"
            android:layout_marginTop="4dp"
            android:clickable="true"
            />
      </RelativeLayout>
    </android.support.v4.widget.NestedScrollView>
    <View
        android:layout_width="match_parent"
        android:layout_height="4dp"
        android:background="@drawable/toolbar_dropshadow"
        />
  </RelativeLayout>
</android.support.design.widget.CoordinatorLayout>

2 个答案:

答案 0 :(得分:0)

不幸的是,我没有找到解决方法,但是我通过添加以下内容来减少了抽搐的频率:

CoordinatorLayout.LayoutParams params =
    (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
if (behavior != null) {
  behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
    @Override public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
      return false;
    }
  });
}
params.setBehavior(behavior);

我也这样编辑布局:

<android.support.design.widget.AppBarLayout
  android:id="@+id/app_bar_layout"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:fitsSystemWindows="true"
  android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
  >
<android.support.design.widget.CollapsingToolbarLayout
    android:id="@+id/collapsing_toolbar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorLightGray"
    android:fitsSystemWindows="true"
    android:minHeight="?attr/actionBarSize"
    app:contentScrim="@color/colorLightGray"
    app:expandedTitleMarginEnd="64dp"
    app:expandedTitleMarginStart="48dp"
    app:layout_scrollFlags="scroll|exitUntilCollapsed"
    >
  <ImageView
      android:id="@+id/ivSectionCover"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:fitsSystemWindows="true"
      android:scaleType="centerCrop"
      android:src="@color/colorLightGray"
      app:layout_collapseMode="parallax"
      />
  <ImageView
      android:layout_width="match_parent"
      android:layout_height="170dp"
      android:layout_gravity="bottom"
      android:alpha="0.5"
      android:scaleType="fitXY"
      app:layout_collapseMode="pin"
      app:srcCompat="@drawable/background_gradient"
      />
  <android.support.v7.widget.Toolbar
      android:id="@+id/toolbar"
      android:layout_width="match_parent"
      android:layout_height="?attr/actionBarSize"
      app:layout_collapseMode="pin"
      app:layout_scrollFlags="scroll|enterAlways|snap"
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
      />
</android.support.design.widget.CollapsingToolbarLayout>

答案 1 :(得分:0)

尝试删除属性Android:fitsSystemWindows =“ true”或将其更改为false。看起来布局在状态栏后面。合适的系统窗口将允许布局超出状态栏甚至导航栏。