当我执行非常快速的混蛋时,我遇到了CollapsingToolbarLayout的问题。隐藏appBar和tablayout也会发生同样的事情。
我需要工具栏隐藏在滚动和CollapsingToolbar崩溃。当滚动不那么快时,它工作正常。
但是当它很快 - 似乎appBar在此之后崩溃并扩展。但它没有扩大回来。
请看一下视频。
似乎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>
不幸的是,我还没有找到解决方案,但我通过添加以下内容减少了混蛋的频率:
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>
尝试删除属性Android:fitsSystemWindows =“true”或将其更改为false。看起来布局正在状态栏后面。适合系统窗口将允许布局超出状态栏甚至导航栏。