【问题标题】:Hide statusbar, navigationbar without resize content隐藏状态栏、导航栏而不调整内容大小
【发布时间】:2019-08-30 11:29:01
【问题描述】:

我使用下面的代码来隐藏/取消隐藏状态栏/导航栏。

    public void hideSystemUI() {
    getWindow().getDecorView().setSystemUiVisibility(
            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 // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE);
}

public void showSystemUI() {
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);


}

当状态栏/导航栏显示或隐藏然后主要内容调整大小(查看此视频:https://drive.google.com/file/d/11OnTSWBkNnn2PJ3_O0t-IWuregmiNHYW/view?usp=sharing),如何防止这种情况?

【问题讨论】:

    标签: java android statusbar


    【解决方案1】:

    请使用以下代码隐藏状态栏

    fun hideStatBar(activity: Activity)
    {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
        {
            var window = activity.window
            if (window != null)
            {
                window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
                window.statusBarColor = Color.TRANSPARENT
            }
        }
    }
    

    显示状态栏的方法

        fun displayStatBar(activity: Activity)
        {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
            {
                var window = activity.window
                if (window != null)
                {
                    window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
                    window.statusBarColor = activity.getColor(R.color.primary_dark)
                }
            }
        }
    

    【讨论】:

    • 此代码不适用于我的情况。我需要在不调整内容大小的情况下显示和隐藏状态栏和导航栏。你看过我的视频吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多