Android 带有倒置图标的半透明状态栏
Android Translucent status bar with Inverted icons
我想知道如何实现 Google 日历的外观。
即:
- 倒置的状态栏图标
- 自定义状态栏颜色(不是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)
谢谢。
是的,您可以将状态栏图标颜色更改为黑色。将其添加到您的 values-v23/styles。xml
<item name="android:windowLightStatusBar">true</item>
eg.add 将其添加到 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
开始工作
你可以试试这个。在 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>
输出将是这样的,你可以改变你的操作栏颜色你想要什么我给了蓝色
设法找到解决方案:
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>
通过以编程方式设置所有标志解决了这个问题。显然,由于某些奇怪的原因,在样式中设置 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);
}
我想知道如何实现 Google 日历的外观。
即:
- 倒置的状态栏图标
- 自定义状态栏颜色(不是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)
谢谢。
是的,您可以将状态栏图标颜色更改为黑色。将其添加到您的 values-v23/styles。xml
<item name="android:windowLightStatusBar">true</item>
eg.add 将其添加到 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
开始工作你可以试试这个。在 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>
输出将是这样的,你可以改变你的操作栏颜色你想要什么我给了蓝色
设法找到解决方案:
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>
通过以编程方式设置所有标志解决了这个问题。显然,由于某些奇怪的原因,在样式中设置 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);
}