簡體   English   中英

如何在布局/樣式XML中設置狀態欄的顏色?

[英]How to set status bar tint color in layout/style XML?

我在應用程序主題中使用windowTranslucentStatus

現在,還想給狀態欄着色以匹配我的ActionBar。

當前,我正在使用SystemBarTint庫,除了一個問題外,該庫通常很好:

啟動應用程序時,操作系統會在實際充氣期間將主題樣機布局顯示為初始圖像。 在那個階段,還沒有狀態欄着色。

看起來像這樣(在應用啟動過程中,帶我5次以捕獲此屏幕截圖): 無着色

僅在活動完全加載后才應用色調。 這對我來說是個問題,我正在尋找一種在啟動過程中以某種方式在狀態欄中顯示完整品牌的方法。

我已經閱讀了此博客文章,其中說明了如何通過指定windowBackground來實際控制啟動期間將顯示的windowBackground

我將windowBackground設置為我的主要顏色->然后整個屏幕都塗成粉紅色。

我將活動的根元素上的background屬性設置為白色,但是在啟動過程中,屏幕再次變為粉紅色,並且只有在加載活動之后,內容的背景才會清除為白色。 這樣可以,但是不理想。

我知道我可以在狀態欄應具有白色背景和顏色的位置上創建位圖,但是那樣將無法主題化,這意味着如果主要顏色發生變化,則必須創建新的位圖。

綜上所述,我的問題是:您知道一種在XML中為狀態欄(在KitKat中)設置色調顏色的方法嗎?

或者,是否可以創建一個XML可繪制對象,該對象將在頂部包含一個固定高度的彩色條?

這是:( 幾乎)完美的答案

很高興知道有人像我一樣在努力解決同樣的問題。

為簡單起見,我將在此處發布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>

現在在我的主題中,我將此可繪制對象指定為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>

正如我在這里回答的那樣,您可以看到我在這里創建的完整的工作示例(不幸的是,復制的時間太長,但是請放心,回購無處可做!)。

哦,從棒棒糖開始,就不需要花招了;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM