Android带有反转图标的半透明状态栏

zynd9foi  于 2023-05-21  发布在  Android
关注(0)|答案(5)|浏览(150)

我想知道如何才能实现谷歌日历的look.

即:

  • 反转状态栏图标
  • 自定义状态栏颜色(不是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)

谢谢

k2arahey

k2arahey1#

找到了解决方案:
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>
bgtovc5b

bgtovc5b2#

通过以编程方式设置所有标志修复了此问题。显然,由于一些奇怪的原因,在样式中设置windowsLightStatusBar没有反映。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().setNavigationBarColor(getResources().getColor(R.color.colorAccentDark));
        //getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
        getWindow().setStatusBarColor(Color.TRANSPARENT);
        //setStatusBarTranslucent(true);
    }
gmol1639

gmol16393#

你可以试试这个在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>

输出将是这样的,你可以改变你的行动栏的颜色,你想要什么,我给了蓝色x1c 0d1x

mzmfm0qo

mzmfm0qo4#

是的,您可以将状态栏图标的颜色更改为黑色。将其添加到您的values-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更改为灰色,或者white.it从API 23工作

uurity8g

uurity8g5#

在编写中:
实现“com.google.accompanist:accompanist-systemuicontroller:0.30.1”

val systemUiController = rememberSystemUiController()

SideEffect {
        systemUiController.setStatusBarColor(Color.Transparent, darkIcons = true)
        systemUiController.setNavigationBarColor(navigationBarColor)
}

相关问题