【发布时间】:2020-01-04 14:58:59
【问题描述】:
我正在尝试使用视图寻呼机在我的应用中实现照片查看器。只需轻轻一按,我就能让系统 UI 消失(导航栏和状态栏)。我遇到的唯一问题是,每当我让状态栏消失并重新出现时,我的视图寻呼机上的布局就会开始抖动或跳跃。
我已尝试按照this 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>
【问题讨论】:
-
您是否尝试过在片段根目录中使用
android:animateLayoutChanges="true"或在 Viewpager 中使用LinearLayout?,指向您的 gif 文件的链接,不要与我一起使用。 -
对不起。让我更新 gifs
-
@Racu 我已经更新了 gif,我还尝试将属性添加到我的根视图和线性布局,但是当我尝试隐藏状态栏时它仍然在跳跃。
-
啊,用 gif 更好,试试
android:fitSystemWindows="false" -
嗯,结果还是一样,但我注意到我的布局现在从顶部向下推的距离几乎与状态栏的高度相同。
标签: android xml kotlin android-viewpager windowinsets