Android Kitkat 4.4版本状态栏下使用导航抽屉时状态栏颜色显示为白色不透明

Posted

技术标签:

【中文标题】Android Kitkat 4.4版本状态栏下使用导航抽屉时状态栏颜色显示为白色不透明【英文标题】:status bar colour shows white not transparent while using navigation drawer under status bar in Android Kitkat 4.4 version 【发布时间】:2016-10-04 07:50:27 【问题描述】:

我正在使用材料设计导航抽屉,我想在 android kitkat 4.4 版本的透明状态栏下制作我的抽屉布局,因为我使用 fitsystemwindow true 但是当使用 fitsystem window true 时它显示白色状态栏我也使用过 android: windowTranslucentStatus true 和 android:windowTranslucentNavigation false 在我的 style.xml 下 values-v19 但它仍然显示我在 android kitkat 4.4 中的白色状态栏它很容易在我知道的状态栏的棒棒糖中实现,所以如何在 android kitkat 4.4 中使状态栏透明我对此进行了很多谷歌搜索,但没有一个解决方案对我有用。请帮助我解决此问题。在此先感谢。

values-v19/style.xml

 <resources xmlns:android="http://schemas.android.com/tools">

        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="android:windowTranslucentStatus">true</item>
            <item name="android:windowTranslucentNavigation">false</item>


        </style>

    </resources>

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_
    android:layout_
    android:fitsSystemWindows="true">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/coordinator"
        android:layout_
        android:layout_>

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:paddingTop="5dp"
                android:layout_
                android:layout_
                android:background="?attr/colorPrimary"
                android:theme="@style/ThemeOverlay.AppCompat.Dark" />

            <android.support.design.widget.TabLayout
                android:id="@+id/tablayout"
                android:layout_
                android:layout_
                android:background="?attr/colorPrimary"
                android:theme="@style/ThemeOverlay.AppCompat.Dark"
                app:tabGravity="fill"
                app:tabIndicatorColor="#f8f880"
                app:tabSelectedTextColor="#ff8800"
                app:tabTextColor="#ffffff" />

            <android.support.v4.view.ViewPager
                android:id="@+id/viewpager"
                android:layout_
                android:layout_ />

        </LinearLayout>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_
            android:layout_
            android:layout_alignParentBottom="true"
            android:layout_gravity="bottom|right"
            android:layout_marginBottom="@dimen/activity_vertical_margin"
            android:layout_marginRight="@dimen/activity_horizontal_margin"
            android:src="@drawable/ic_done" />

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


    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_
        android:layout_
        android:layout_gravity="start"
        android:background="#ffffff"
        app:headerLayout="@layout/drawer_header"
        app:menu="@menu/drawer" />
</android.support.v4.widget.DrawerLayout>

【问题讨论】:

【参考方案1】:

适用于 API 21+

<style name="AppTheme" parent="android:Theme.Holo.NoActionBar.TranslucentDecor">
    ...
</style>

适用于 API 级别 19+

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowTranslucentStatus">true</item>
</style>

你的布局也应该有android:fitsSystemWindows="false"

注意:在 Android KitKat 中,您无法更改状态栏的颜色,除非您使用以下解决方案,因为 Google 仅在 Lollipop 中引入了属性 statuBarColor

所以你需要检查这个transparent status bar in KITKAT

【讨论】:

我正在使用上面定义的 appcompact 主题,问题 theme.appcompact.light.noactionbar 也使用 fitsystemwindow false 所以它只制作一半,即当抽屉打开时,状态栏的宽度大小显示白色没有任何效果正如你所说的 你能把你的问题截图发上来吗 等会儿我再发给你 我想让状态栏颜色透明并在 Android kitkat 版本中将抽屉放在后面是可能的。它可能在棒棒糖 5.0 中,但是 kitkat 4.4 版本呢 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) 窗口 w = getWindow(); // 例如在 Activity 的 onCreate() 中 w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

以上是关于Android Kitkat 4.4版本状态栏下使用导航抽屉时状态栏颜色显示为白色不透明的主要内容,如果未能解决你的问题,请参考以下文章

Android 4.4系统 KitKat到底都有哪些能耐

在 android 4.4+ 或 kitkat 中隐藏状态栏

利用 Android 4.4 KitKat 中的半透明状态栏

利用 Android 4.4 KitKat 中的半透明状态栏

关于如何彻底搞定Android Kitkat+沉浸式状态栏效果

关于如何彻底搞定Android Kitkat+沉浸式状态栏效果