fitsSystemWindows使我的半透明状态栏变灰

时间:2016-11-26 13:38:54

标签: android

在我的styles.xml中,该应用的主题具有以下属性:

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:fitsSystemWindows">true</item>
 </style>

如果android:fitsSystemWindowsfalse,我的statusbar将是透明的,但某些布局无法正确显示在屏幕上。因此,为了使布局适合屏幕,我将android:fitsSystemWindows添加到true,然后使一切正常。但状态栏变为灰色,如下图所示。

这是什么,我做错了?

enter image description here

1 个答案:

答案 0 :(得分:0)

自从被问到这一段时间以来已经有一段时间了,但我现在正站在同一个立场上,我为克服这个问题所做的是: 1)从样式和布局(xml)中删除所有android:fitsSystemWindows 2)以编程方式计算状态栏的高度 3)在根视图组上应用带有状态栏计算值的填充顶部

要计算状态栏高度,我使用了以下代码段。这是从一些我现在不记得的作者的网站带来的(很抱歉......)

public static int getStatusBarHeight(Activity activity) {
    int result = 0;
    int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = activity.getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}