窗口动画与 Android 5.0 上的导航栏重叠
Posted
技术标签:
【中文标题】窗口动画与 Android 5.0 上的导航栏重叠【英文标题】:Window animation overlaps navigation bar on Android 5.0 【发布时间】:2014-12-24 19:21:18 【问题描述】:我正在使用 Dialog
的自定义子类在我的应用程序中实现 Material Design bottom sheet 设计模式。对话框被吸引到屏幕底部并使用 y 平移窗口进入动画:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/decelerate_cubic">
<translate android:fromYDelta="100%"
android:toYDelta="0"
android:duration="250" />
</set>
在早期版本的 Android 上,这看起来很棒(如果我自己这么说的话):对话框从屏幕底部和导航栏下方平滑滑入。
但是,在最新的 5.0 预览图像上,窗口动画发生在导航栏的顶部,因此对话框内容暂时与导航重叠。对于这个特殊的用例,它看起来很丑陋、奇怪和分散注意力。
我可以在我的主题或代码中设置什么来防止这种情况发生吗?
【问题讨论】:
你用来启动动画的代码是什么?您的自定义 Dialog 子类是如何实现的? 请在所有视图所在的位置显示您的主 xml 文件。 窗口动画是通过对话框指定的XML主题资源设置的。 你最终解决了这个问题吗? 【参考方案1】:随便用
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
用于显示对话框的活动。在这种情况下,您的对话框将在动画期间位于导航栏下方。
【讨论】:
解决了这个问题,但是使用上面的标志时状态栏不是半透明的。 这样,Bottom Sheet 动画似乎仍然与软导航栏重叠,但不像默认情况下那样明显。有没有办法让它完全退出软导航栏下方的视图? 忽略我之前的评论。如果动画持续时间减慢到超过 1.5 秒,则此方法有效。希望它适用于任何动画持续时间。【参考方案2】:来自 android 开发者网站:
在此版本中,Android 引入了一个新的工具栏小部件。这是 Action Bar 模式的概括,它为您提供了更多的控制和灵活性。工具栏是您的层次结构中的一个视图,就像任何其他视图一样,可以更轻松地与您的其余视图交错、对其进行动画处理以及对滚动事件作出反应。您还可以将其设置为 Activity 的操作栏,这意味着您的标准选项菜单操作将显示在其中。
所以操作栏现在是您布局中的一个视图,这就是弹出窗口越过它的原因。 我也知道他们介绍了一些 z-index 属性,这可能对你有帮助。
【讨论】:
我说的不是操作栏,而是设备导航栏(返回、主页、最近)。以上是关于窗口动画与 Android 5.0 上的导航栏重叠的主要内容,如果未能解决你的问题,请参考以下文章