首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浸没式活动转变

浸没式活动转变
EN

Stack Overflow用户
提问于 2019-10-07 10:07:29
回答 2查看 278关注 0票数 1

我已经成功地将应用程序设置为沉浸式模式,因为我希望隐藏状态栏(在顶部屏幕上)和导航栏(在底部屏幕上)。问题是,当活动发生变化时,底部的栏会自动出现,并在下线和消失之后立即出现。我想避免这件事。

所有活动都在清单中设置了样式AppTheme.NoActionBar:

代码语言:javascript
复制
android:theme="@style/AppTheme.NoActionBar"

在OnCreate中,所有代码都有以下代码:

代码语言:javascript
复制
getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(
                new ViewTreeObserver.OnGlobalLayoutListener() {
                    @Override
                    public void onGlobalLayout() { 
                 GlobalFunctions.setFullscreen(getWindow().getDecorView());
                    }
                });

这里是setFullscreen()函数:

代码语言:javascript
复制
public static void setFullscreen(View decorView){
        int ui_Options = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
        decorView.setSystemUiVisibility(ui_Options);
    }

应该在活动生命周期中的onCreate之前设置这些属性吗?还是有其他的解决办法?还是我用错误的方式实现了沉浸式模式?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-07 10:17:26

您不需要设置全局布局侦听器。只需在setFullscreen之前调用super.onCreate()函数

票数 1
EN

Stack Overflow用户

发布于 2019-10-07 10:30:49

在清单活动标记中使用此代码

代码语言:javascript
复制
android:theme="@style/AppFullScreenTheme"

在style.xml中创建此样式

代码语言:javascript
复制
    <style name="AppFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:fontFamily">@font/montserrat</item>
    <item name="android:windowContentOverlay">@null</item>
 </style>

否则,在活动类中使用此方法。

代码语言:javascript
复制
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

这对我有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58267396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档