【问题标题】:Translucent Bars did not work on android半透明条不适用于 android
【发布时间】:2015-12-07 12:58:21
【问题描述】:

我想在android上创建半透明条。这是我的样式代码和清单设置:

<resources>

<!-- Base application theme. -->
<style name="MyAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="MyAppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

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

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

对于 21 级以上的 api,我的风格如下:

<resources>

<style name="MyAppTheme.NoActionBar" parent="MyAppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

然后在我的清单中我有这些设置:

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

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/MyAppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main"
        android:theme="@style/MyAppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
</application>

然后我在 api 级别 23 的设备上运行它,我得到了这个:

状态栏背景没有设置为 colorPrimaryDark,这绝对不是白色。为什么?

【问题讨论】:

    标签: android statusbar


    【解决方案1】:

    您必须在主题中设置 windowTranslucentStatus 标志,而不是更改状态栏颜色。改变这个:

    <item name="android:statusBarColor">@android:color/transparent</item>
    

    到这里:

    <item name=”android:windowTranslucentStatus”>true</item>
    

    【讨论】:

    • 当我设置 windowTranslucentStatus 时,状态栏变为灰色,这不是我所期望的。
    • 因为您必须在布局中手动将状态栏后面的颜色设置为深色并删除状态栏填充,以便您的应用也被绘制在状态栏后面或将状态栏颜色设置为 colorPrimaryDark(它不会是半透明的)
    猜你喜欢
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2023-04-08
    • 2014-02-01
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多