【问题标题】:100% transparent status bar android in lollipop棒棒糖中的100%透明状态栏android
【发布时间】:2018-01-17 07:17:24
【问题描述】:

我想在 android 中制作 100% 半透明的状态栏,以便它可以清楚地显示其下方的图像。附上图片。

我为我的活动设置了以下主题:

<resources>

    <style name="AppThemeT" parent="Theme.AppCompat.Light">
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@color/transparent</item>
        <item name="android:windowTranslucentStatus">true</item>

    </style>
</resources>

但它在顶部给出了一个奇怪的灰色阴影。检查附加的图像。我想去掉那个影子。

【问题讨论】:

  • 如果您还没有,请查看This
  • @ADM 已经完成。没有变化
  • 能把@color/transparent的色码发一下吗
  • @KapilRajput #00000000
  • window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

标签: android statusbar transparent


【解决方案1】:

将此主题应用到您的布局根目录

<style name="AppTheme.Transparent">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

这又回到了你的 java 活动文件中:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
    }

【讨论】:

  • 你自己测试过吗?这甚至不会使状态栏透明。它还会在上面产生奇怪的灰色阴影
  • 它对我有用。在android 9上,有一个灰色的阴影,但是在设置标志后,它就消失了
【解决方案2】:

使用沉浸式视图将其删除。 你可以learn form here

【讨论】:

    【解决方案3】:

    在您的styles.xml 中,添加以下行。

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- 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="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowDisablePreview">true</item>
        <item name="colorPrimary">@android:color/transparent</item>
        <item name="colorPrimaryDark">@android:color/transparent</item>
    </style>
    
    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
    
    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
    

    为 v21 创建 styles.xml,它应该如下所示:

    <style name="AppTheme.NoActionBar">
       <item name="windowActionBar">false</item>
       <item name="windowNoTitle">true</item>
       <item name="android:windowDisablePreview">true</item>
       <item name="android:windowDrawsSystemBarBackgrounds">true</item>
       <item name="android:statusBarColor">@android:color/transparent</item>
       <item name="colorPrimary">@android:color/transparent</item>
       <item name="colorPrimaryDark">@android:color/transparent</item>
    </style>
    

    在您的manifest 文件中,您需要定义您的应用程序主题:

    <application
        android:theme="@style/AppTheme"
    

    您还需要在 manifest 文件中定义活动主题

    <activity
        android:theme="@style/AppTheme.NoActionBar"
    

    【讨论】:

      【解决方案4】:

      将此代码添加到您的onCreate();

      getWindow().getDecorView().setSystemUiVisibility(
              View.SYSTEM_UI_FLAG_LAYOUT_STABLE
              | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
      

      【讨论】:

        猜你喜欢
        • 2015-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-02
        • 1970-01-01
        • 2015-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多