Kitkat 中的 StatusBar 颜色显示很奇怪

Posted

技术标签:

【中文标题】Kitkat 中的 StatusBar 颜色显示很奇怪【英文标题】:StatusBar color display weird in Kitkat 【发布时间】:2017-04-10 11:49:17 【问题描述】:

当我运行我的应用程序时,我的状态栏背景颜色显示很奇怪。我不知道为什么会这样。

您可以在顶部看到黑色阴影颜色显示,如 Gradient 类型。

既然这个设备有Kitkat版本那么为什么它显示black颜色。

这个错误还是什么有什么帮助吗?

layout_login.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_
    android:layout_>
    <ScrollView
        android:layout_
        android:layout_
        android:fillViewport="true">
        <RelativeLayout
            android:layout_
            android:layout_
            android:background="@color/white1"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">
            <ImageView
                android:layout_
                android:layout_
                android:layout_marginTop="@dimen/normal_margin40"
                android:id="@+id/imageView_logo"
                android:src="@drawable/gargi_logo"
                android:layout_centerHorizontal="true" />
            <android.support.design.widget.TextInputLayout
                android:id="@+id/textinputLayout_username"
                android:layout_
                android:layout_
                android:layout_marginLeft="@dimen/normal_margin40"
                android:layout_marginRight="@dimen/normal_margin40"
                android:layout_marginTop="@dimen/normal_margin50"
                android:layout_below="@+id/imageView_logo">
                <android.support.design.widget.TextInputEditText
                    android:id="@+id/login_username_editText"
                    android:layout_
                    android:layout_
                    android:hint="@string/username"
                    android:singleLine="true"
                    android:focusable="true"
                    android:focusableInTouchMode="true"
                    android:inputType="textPersonName" />
            </android.support.design.widget.TextInputLayout>
            <android.support.design.widget.TextInputLayout
                android:id="@+id/textinputLayout_password"
                android:layout_
                android:layout_
                android:layout_marginLeft="@dimen/normal_margin40"
                android:layout_marginRight="@dimen/normal_margin40"
                android:layout_below="@+id/textinputLayout_username"
                android:layout_marginTop="@dimen/normal_margin5">
                <android.support.design.widget.TextInputEditText
                    android:id="@+id/login_password_editText"
                    android:layout_
                    android:layout_
                    android:hint="@string/password"
                    android:singleLine="true"
                    android:inputType="textPassword" />
            </android.support.design.widget.TextInputLayout>
            <Button
                android:id="@+id/login_button"
                android:layout_
                android:layout_
                android:layout_below="@+id/textinputLayout_password"
                android:theme="@style/AppTheme.Button"
                android:text="@string/login"
                android:textStyle="bold"
                android:textColor="@color/white1"
                android:gravity="center"
                android:padding="2dp"
                android:layout_marginTop="@dimen/normal_margin5"
                android:layout_marginLeft="@dimen/normal_margin40"
                android:layout_marginRight="@dimen/normal_margin40" />
            <TextView
                android:id="@+id/txt_forgetpassword"
                android:layout_
                android:layout_
                android:layout_below="@+id/login_button"
                android:text="@string/forget_password"
                android:textColor="@color/colorPrimary"
                android:gravity="center_horizontal"
                android:layout_marginTop="@dimen/normal_margin10" />
            <TextView
                android:id="@+id/signUp_textView"
                android:layout_
                android:layout_
                android:textColor="@color/colorPrimary"
                android:text="@string/register_now"
                android:gravity="center_horizontal"
                android:layout_marginBottom="@dimen/normal_margin10"
                android:layout_alignParentBottom="true" />
        </RelativeLayout>
    </ScrollView>
</android.support.design.widget.CoordinatorLayout>

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:titleTextStyle">@style/myTheme.ActionBar.Text</item>
    </style>

这是我的LoginActivity 所以我使用这个主题

AppTheme.NoActionBar

更新日期:

我创建了显示相同结果的新 Google Kitkat 设备

【问题讨论】:

它的状态栏颜色在 Kitkat 中不能改变 @Nithinlal 我知道,但为什么显示Gradient 输入颜色和Top 查看哪个手机,查看所有应用是否有相同颜色的状态栏。如果是,那是你的主题问题 这是 KitKat 的标准外观。 @Nithinlal 其他应用程序没有任何颜色,只有黑色。正如可以说statusBar 没有颜色那么为什么我的statusBar 有颜色?? 【参考方案1】:

状态栏是操作系统拥有的系统窗口。在 5.0 之前的 Android 设备上,应用程序无权更改其颜色,因此 AppCompat 库不支持旧平台版本。 AppCompat 可以做的最好的事情是为应用程序中的 ActionBar 和其他常见 UI 小部件着色提供支持。

【讨论】:

我知道但为什么显示Gradient 输入颜色和Top【参考方案2】:

为了充分利用您的内容,您现在可以使用新的窗口样式和主题来请求半透明的系统 UI,包括状态栏和导航栏。为了确保导航栏按钮或状态栏信息的易读性,系统栏后面会显示细微的渐变。一个典型的用例是一个需要显示到墙纸的应用程序。 - 原因 ;)

【讨论】:

以上是关于Kitkat 中的 StatusBar 颜色显示很奇怪的主要内容,如果未能解决你的问题,请参考以下文章

我的 Material Design ActionBar 或 Lollipop 设备中的 StatusBar 上没有显示颜色,但在 Pre-Lollipop 设备的 ActionBar 中显示。为啥?

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

android 状态栏梳理

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

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

ios 实现自定义状态栏StatusBar 和 导航栏navigationBar 的状态和颜色