我知道在SDK >= 26中,我们不能在状态栏上绘制,但是我如何使我的视图(TYPE_APPLICATION_OVERLAY)全屏并在状态栏下绘制?我知道一些应用程序的绘制概述(如信使)能够在状态栏下绘制,但无论我尝试什么,我的覆盖总是停在状态栏。
ntjbwcob1#
哇,经过20个小时的搜索,我发现我可以使用LayoutParams.FLAG_LAYOUT_NO_LIMITS并将yPos设置为负数以达到预期的效果。
dvtswwa32#
这实际上是由于Android默认情况下避免剪切而不是状态栏本身造成的。这可以通过在没有裁剪的手机上运行没有@saik的答案中给出的偏移量解决方案的代码来看到。从Android 30开始,您可以使用LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS来防止Android避开剪切区域,而不是使用偏移解决方案。
LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
2条答案
按热度按时间ntjbwcob1#
哇,经过20个小时的搜索,我发现我可以使用LayoutParams.FLAG_LAYOUT_NO_LIMITS并将yPos设置为负数以达到预期的效果。
dvtswwa32#
这实际上是由于Android默认情况下避免剪切而不是状态栏本身造成的。这可以通过在没有裁剪的手机上运行没有@saik的答案中给出的偏移量解决方案的代码来看到。
从Android 30开始,您可以使用
LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
来防止Android避开剪切区域,而不是使用偏移解决方案。