gpt4 book ai didi

android - 当隐藏状态栏时,有没有办法阻止 "jumping"的布局?

转载 作者:行者123 更新时间:2023-11-29 02:18:50 24 4
gpt4 key购买 nike

我正在尝试使用 View 寻呼机在我的应用程序中实现照片查看器。我能够通过一次触摸让系统用户界面消失(包括导航栏和状态栏)。我遇到的唯一问题是,每次我使状态栏消失并重新出现时,我在 View 寻呼机上的布局都会开始摇晃或跳跃。

A visual of my implementation

What I'm trying to implement

我已尝试按照 this 中的建议设置系统 ui 标志堆叠在流柱上。但它仍然给我“跳跃”的布局响应。

下面的代码是我用来隐藏/显示状态栏的:

/**
* Hide status bar and navigation bar.
*/
private fun hideSysWindows(activity: Window) {
activity.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_FULLSCREEN
or View.SYSTEM_UI_FLAG_IMMERSIVE)
}

/**
* Show status bar and navigation bar.
*/
private fun showSysWindows(activity: Window) {
activity.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
}

我的 View 寻呼机的 XML 代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black">

<com.example.snapkit.mediaviewer.MediaViewPager android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/media_viewer"/>

</LinearLayout>

最佳答案

因此,我在一个新项目上进行了实现,并在我的模拟器(Pixel 2 XL 和 Pixel 3 XL)中的两个不同设备上进行了尝试。我注意到它通常会隐藏在像素 2 下,但在像素 3 xl(带有凹口)上,它将绘制在凹口本身下方。

经过一些搜索,我意识到我必须弄乱 display cutout (也称为缺口)并设置一个标志来告诉系统 ui 在缺口本身下绘制。

这就像一个魅力,希望下面的代码能帮助任何看到它的人。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P){
window.attributes.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
}

关于android - 当隐藏状态栏时,有没有办法阻止 "jumping"的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57742261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com