在android中正确隐藏状态栏

Posted

技术标签:

【中文标题】在android中正确隐藏状态栏【英文标题】:hide the status bar correctly in android 【发布时间】:2021-10-11 20:15:06 【问题描述】:

我正在尝试显示和隐藏导航和状态栏,但问题是根本没有显示状态。我试图将这个getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 包括在内以显示和getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 以隐藏但它在隐藏和显示时上下移动时扰乱了整个视图。这是实现

 if (!actionbar.isShown()) 
    
        decorView.setSystemUiVisibility(
                 View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            // Show status bar
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
                getSupportActionBar().show();
    
          else 
    
          decorView.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);
         // Hide status bar
              getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
              getSupportActionBar().hide();
    
     

这里是xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:animateLayoutChanges="true"
    android:id="@+id/activity_player_layout"
    >
    <androidx.appcompat.widget.Toolbar
        android:layout_
        android:elevation="4dp"
        android:layout_
        />

   <com.google.android.exoplayer2.ui.PlayerView
      android:id="@+id/exoplayer_video"
      android:layout_
      android:layout_
      android:background="@color/black"
      app:bar_
      app:controller_layout_id="@layout/custom_controller"
      app:player_layout_id="@layout/exo_simple_player_view"
      >

      </com.google.android.exoplayer2.ui.PlayerView>

</RelativeLayout>

【问题讨论】:

【参考方案1】:

试试这种方式,因为这适用于我的项目

   protected void onCreate(Bundle savedInstanceState) 
     super.onCreate(savedInstanceState);
     requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
 

【讨论】:

以上是关于在android中正确隐藏状态栏的主要内容,如果未能解决你的问题,请参考以下文章

安卓 /android 手机 隐藏 状态栏 怎么操作啊

Android 完全隐藏状态栏方法

android 动态控制状态栏显示和隐藏的方法实例

Nativescript - 在 Android 中隐藏状态栏

Android 状态栏的设置

Android 隐藏状态栏、标题栏、透明状态栏的几种方式