防止 CollapsingToolbar 在 Lollipop 的状态栏下继续
Prevent CollapsingToolbar continuing under status bar in Lollipop
我为 TextView
开发了一些自定义行为,可以根据 CoordinatorLayout
内 AppBarLayout
的高度改变位置和大小。这样一来,标题在打开时会显得很大并且位于完全展开 Toolbar
的中心,但在 ToolBar
完全折叠时会位于正常标题位置。
在 Lollipop device (not working correctly) and a JellyBean 设备上观看视频(工作正常)。
这个问题只发生在 Lollipop 设备上(我相信,根据我的测试),它似乎与状态栏覆盖在 Lollipop 设备上而不是在 JellyBean 设备上有关。这也反映在我的代码中,在哪里计算最终的 y
位置我需要执行以下操作以使最终位置正确:
if (mFinalYPosition == 0) {
mFinalYPosition = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
? (((mContext.getResources().getDimensionPixelOffset(R.dimen.abc_action_bar_default_height_material)/2)) + getStatusBarHeight())
: ((mContext.getResources().getDimensionPixelOffset(R.dimen.abc_action_bar_default_height_material)/2));
}
对我来说最好的解决方案是让 Lollipop 设备像对待早期 Android 版本一样对待状态栏,即处于锁定位置,而不是作为覆盖。
我将如何实现这一目标?
我能够通过从我的 layout
xml
文件中删除所有 android:fitsSystemWindows
元素来解决这个问题。此外,从我发布的视频中可以清楚地看出,在我的 Lollipop 设备上播放动画期间,一些视图消失了,然后又重新出现了。我能够通过在某些 View
上设置 elevation
来解决这个问题,以确保它们在动画期间不会消失在其他人后面。
我为 TextView
开发了一些自定义行为,可以根据 CoordinatorLayout
内 AppBarLayout
的高度改变位置和大小。这样一来,标题在打开时会显得很大并且位于完全展开 Toolbar
的中心,但在 ToolBar
完全折叠时会位于正常标题位置。
在 Lollipop device (not working correctly) and a JellyBean 设备上观看视频(工作正常)。
这个问题只发生在 Lollipop 设备上(我相信,根据我的测试),它似乎与状态栏覆盖在 Lollipop 设备上而不是在 JellyBean 设备上有关。这也反映在我的代码中,在哪里计算最终的 y
位置我需要执行以下操作以使最终位置正确:
if (mFinalYPosition == 0) {
mFinalYPosition = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
? (((mContext.getResources().getDimensionPixelOffset(R.dimen.abc_action_bar_default_height_material)/2)) + getStatusBarHeight())
: ((mContext.getResources().getDimensionPixelOffset(R.dimen.abc_action_bar_default_height_material)/2));
}
对我来说最好的解决方案是让 Lollipop 设备像对待早期 Android 版本一样对待状态栏,即处于锁定位置,而不是作为覆盖。
我将如何实现这一目标?
我能够通过从我的 layout
xml
文件中删除所有 android:fitsSystemWindows
元素来解决这个问题。此外,从我发布的视频中可以清楚地看出,在我的 Lollipop 设备上播放动画期间,一些视图消失了,然后又重新出现了。我能够通过在某些 View
上设置 elevation
来解决这个问题,以确保它们在动画期间不会消失在其他人后面。