我试图获得与在 google play 上看到的类似的效果。
我有下面的布局来显示一个透明的工具栏,后面有一个图像。当用户滚动时,图像视图会在它滚出屏幕时产生视差效果。每当用户向上滚动时,工具栏就会返回,而图像视图仅在用户到达列表的顶部时才会返回。
这一切都很好。
<android.support.design.widget.CoordinatorLayout
android:id="@+id/main"
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.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/background_material_dark">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingToolbarLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
app:statusBarScrim="#09b"
app:contentScrim="#09f">
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/location_banner"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.7"
/>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
app:layout_collapseMode="pin"
android:fitsSystemWindows="true"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
问题
当我将 windowTranslucentStatus 设置为 true 时。视图中的内容上移到状态栏下方,但 CollapsingToolbarLayout 的内容上移两倍的状态栏高度(CollapsingToolbarLayout 保持正确的高度)。
这意味着图像的某些顶部被截断,操作栏现在出现在状态栏下方而不是下方。作为这样的副作用,现在 CollapsingToolbarLayout 底部的填充与状态栏的高度相同
这就是没有 windowTranslucentStatus 的样子。这里一切正常
windowTranslucentStatus 设置为 true
用户从列表底部向上滚动(不在顶部)