当前位置: 首页 > 知识库问答 >
问题:

当状态栏被隐藏时,有没有一种方法可以防止布局“跳转”?

翟曦之
2023-03-14

我试图在我的应用程序中使用视图寻呼机实现照片查看器。我能够让系统用户界面消失(导航和状态栏)在一个单一的触摸。我遇到的唯一问题是,每次我使状态栏消失并重新出现时,我在视图寻呼机上的布局开始抖动或跳跃。

我的实现的可视化

我想要实现的是什么

我已经试着按照这个stack over flow post中的建议设置系统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)
}

我的视图寻呼机的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>

共有1个答案

鞠乐
2023-03-14

因此,我在一个新项目上进行了实现,并在我的emulator(Pixel 2 XL)中的两个不同设备上进行了尝试

经过一些搜索后,我意识到我必须弄乱显示剪切(也称为凹口),并设置一个标志来告诉系统ui在凹口下绘制。

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

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P){
        window.attributes.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
    }
 类似资料:
  • 问题内容: 我将SQL Express 2008用作Web应用程序的后端,问题是Web应用程序在工作时间内使用,因此有时在午餐或休息时间,如果20分钟内没有用户登录,SQL Express将进入空闲状态模式并释放其缓存。 我知道这一点,因为它记录了以下内容: 服务器空闲9709秒后恢复执行 或者 在事件日志中启动数据库“ xxxxxxx” 我想避免这种闲置行为。无论如何,是否有将SQL Expre

  • 我正在构建一个应用程序,带有页面导航,需要在某些页面上显示状态栏,并在其他页面上隐藏它。我想使用淡入/淡出动画,所以我必须设置 并像这样更新状态栏: 当在页面之间导航时,这个过程非常有效,但我无法在启动时摆脱状态栏。 我试过设置: 将其添加到 将此添加到AppDelegates完成启动时使用了以下选项: 将其添加到初始页面的ViewController: 以及在链接的情节提要元素中将“状态栏”设置

  • 我试图使用Jersey构建一个RESTful web服务。 在我的服务器端代码中,有一个名为“domain”的路径,我用来显示内容。只有输入正确的用户名和密码,才能访问“域”所指页面的内容。 当我尝试测试是否返回了正确的内容时,我得到了一个错误(状态=405,原因=方法不允许)。下面是我的客户端测试。 servlet配置很好。我们成功地运行了其他路径。我怀疑原因可能是因为我使用了GET方法来完成本

  • 问题内容: 文档说调用sys.exit()会引发SystemExit异常,该异常可以在外部级别捕获。在这种情况下,我想确定无疑地从测试用例中退出,但是unittest模块会捕获SystemExit并阻止退出。这通常很好,但是我要处理的特定情况是我们的测试框架检测到已配置为指向非测试数据库的情况。在这种情况下,我要退出并阻止运行任何进一步的测试。当然,由于unittest捕获了SystemExit并

  • 假设我有一个简单的JFrame,它有一个包含3个面板的JTabbedPane,第二个面板包含一个JComponent。当“Tab2”面板从其容器中移除时,是否有方法通知JComponent?我的问题是JComponent可能在层次结构的深处。 显然,我在这里寻找的是SWING解决方案...:) 我试图使用setridorRemoved(),但没有成功。我显然做错了什么... ASCII艺术是用Ja