关于安卓沉浸式状态栏

![![图片说明](https://img-ask.csdn.net/upload/201710/26/1509031862_986095.png)图片说明](https://img-ask.csdn.net/upload/201710/26/1509031855_615892.png)图片说明

在布局和styles.xml中都设置了android:fitsSystemWindows="true"。为什么状态栏还是没有沉浸?而是灰色?

style.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">#f5f5f5</item>
    <item name="colorPrimaryDark">#f5f5f5</item>
    <item name="colorAccent">#e9c536</item>
    <item name="android:fitsSystemWindows">true</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:fitsSystemWindows">true</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

app_bar_main.xml

<?xml version="1.0" encoding="utf-8"?>
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mingnote.MainActivity">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:elevation="0dp"

    >

android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
>
android:id="@+id/toolbar_app"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:title="铭记"
app:titleTextColor="@color/common_plus_signin_btn_text_light_default" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_main" />
<ListView
    android:id="@+id/listview"
    android:layout_marginTop="75dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="bottom"
    android:listSelector="@android:color/transparent"
    android:cacheColorHint="@android:color/transparent"
    android:divider="@null"
    android:dividerHeight="1dp"
    android:background="#f5f5f5">
</ListView>


<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_editnote"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="?android:attr/fingerprintAuthDrawable"
    app:elevation="10dp"/>
</android.support.design.widget.CoordinatorLayout>

activity_main

<?xml version="1.0" encoding="utf-8"?>
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">

<include
    layout="@layout/app_bar_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />

Mainactivity.java

private void InitView(){
listView = (ListView)findViewById(R.id.listview);
dataList = new ArrayList>();
fab_editnote = (FloatingActionButton)findViewById(R.id.fab_editnote);
DbHelper = new Database(this);
DB = DbHelper.getReadableDatabase();

    listView.setOnItemClickListener(this);
    listView.setOnItemLongClickListener(this);
   * 显示沉浸式状态栏
   */
  public  void initStatusBar() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
      getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }
  }

在布局中设置 android:fitsSystemWindows="true" 只是预留了padding,还需要在布局的最外层layout中增加背景颜色,找个背景颜色就会渲染状态栏

com.github.niorgai:StatusBarCompat
使用这个框架,可以使状态栏不仅透明而且可以按自己意愿变颜色,无论手机版本