我在我的应用主题中使用windowTranslucentStatus
。
现在,还要将状态栏设置为与我的ActionBar匹配。
目前我正在使用SystemBarTint库,除了一个问题外,这个库大多没问题:
当应用程序启动时,操作系统会在实际通胀期间将主题模型布局显示为启动图像。在那个阶段,还没有状态栏着色。
看起来像那样(在应用启动期间我花了5次来捕获这个屏幕截图):
仅在活动完全加载后才应用色调。这对我来说是一个问题,我正在寻找一种方法,以便在发布过程中以某种方式显示状态栏上的完整品牌。
我已阅读This blog post其中说明了如何通过指定windowBackground
来实际控制启动期间显示的内容。
我将windowBackground
设置为我的主色 - >然后整个屏幕涂成粉红色。
我将我的activity的根元素上的background
属性设置为白色,但是在启动期间再次将屏幕设置为粉红色,并且只有在加载活动后,内容的背景才会清除为白色。这很好但不理想。
我知道我可以创建一个带有白色背景和状态栏应该是的颜色的位图,但是它不会是主题的,这意味着如果主要颜色发生变化,我将不得不创建一个新的位图
总而言之,我的问题是:你知道一种为XML中的状态栏(在KitKat中)设置色彩的方法吗?
或者,是否可以创建一个XML drawable,它在顶部包含一个固定高度的彩色条?
答案 0 :(得分:4)
这是: The (almost) perfect answer
很高兴知道其他人正在像我一样苦苦挣扎。
为了简单起见,我将在这里发布XML drawable:
window_background.xml
:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/status_bar_background"
android:drawable="@color/main_app_color"/>
<item android:id="@+id/content_window_background"
android:drawable="@color/white"
android:top="25dp"/>
</layer-list>
现在在我的主题中,我将此drawable分配为windowBackground
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="BaseAppTheme">
<!-- Customize your theme here. -->
<item name="android:windowTranslucentNavigation">@bool/translucent_nav_bar</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowBackground">@drawable/window_background</item>
</style>
</resources>
答案 1 :(得分:4)