1

我已经为 a 开发了一些自定义行为,这些行为会根据 a内部TextView的高度来改变位置和大小。这是为了使标题在打开时显得很大并且在完全展开的中心,但在完全折叠时处于正常的标题位置。AppBarLayoutCoordinatorLayoutToolbarToolBar

观看视频以在Lollipop设备(无法正常工作)和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 版本相同,即处于锁定位置,而不是作为覆盖。

我将如何实现这一目标?

4

1 回答 1

1

我能够通过从文件中删除所有android:fitsSystemWindows元素来解决此问题。layout xml此外,从我发布的视频中可以清楚地看出,一些视图在我的棒棒糖设备上的动画过程中消失了,然后又重新出现。我可以通过设置elevation某些Views 来解决这个问题,以确保它们在动画期间不会消失在其他人后面。

于 2015-09-23T16:09:35.807 回答