带有倒置图标的Android半透明状态栏

时间:2017-07-19 15:16:12

标签: android android-design-library

我想知道如何才能实现Google日历的外观。enter image description here

那是:

  • 倒置状态栏图标
  • 自定义状态栏颜色(不是windowTranslucentStatus设置的默认颜色透明度)
  • 小部件顶部填充调整为位于状态栏下

我尝试了什么:

设置windowTranslucentStatus禁用windowLightStatusBar:

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:windowTranslucentStatus">true</item>

仅允许完全透明(中间没有颜色),fitSystemWindows无法正常工作:

<item name="android:windowLightStatusBar">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">#19000000</item>

window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)

感谢。

4 个答案:

答案 0 :(得分:2)

是的,您可以将状态栏图标颜色更改为黑色。添加到您的值-v23 / styles.xml中

<item name="android:windowLightStatusBar">true</item>

例如,将它添加到style.xml

中的values-v23文件夹中
<?xml version="1.0" encoding="utf-8"?>

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">#F5F5F5</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowLightStatusBar">true</item>
</style>

确保将v23 / styles.xml中的colorPrimaryDark更改为灰色或白色。它可以在API 23中使用

答案 1 :(得分:2)

管理以找到解决方案:

onCreate(在Kotlin中):

window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
window.statusBarColor = Color.parseColor("#1A000000")

styles.xml:

<item name="android:windowDrawsSystemBarBackgrounds">true</item>

答案 2 :(得分:2)

通过以编程方式设置所有标志来解决此问题。显然,出于某种奇怪的原因,在样式中设置windowsLightStatusBar并没有反映出来。

forever

答案 3 :(得分:1)

你可以试试这个。将其添加到values-v23中并在布局中设置此主题

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:statusBarColor">#fff</item>
        <item name="android:windowLightStatusBar">true</item>
    </style>

这会将状态栏背景更改为白色

<item name="android:statusBarColor">#fff</item>

这会将状态栏图标更改为反转(灰色)

<item name="android:windowLightStatusBar">true</item>

输出将是这样的,你可以改变你想要的动作栏颜色我给的蓝色 enter image description here