2017-01-05 43 views
3

我最近想讓我的狀態欄顏色漸變。我知道WindowManager的工作方式。但我決定改爲找到另一種方式來使用漸變爲狀態欄着色。漸變的原色深度

所以我這樣做,

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="colorPrimary">#3F51B5</color> 
    <color name="colorPrimaryDark">@drawable/gradient</color> 
    <color name="colorAccent">#FF4081</color> 
</resources> 

@繪製/梯度

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient android:angle="135" android:startColor="#f56f2c" android:endColor="#fa9f46"/> 
</shape> 

的@繪製/梯度漸變顏色,我成立。雖然IDE表示這不是正確的方式,但它的工作。

我的問題:這是正確的做法嗎?有沒有人有這樣的經歷?

+0

郵政梯度.xml也 –

+0

你可以看看這裏:http://stackoverflow.com/questions/4381033/multi-gradient-shapes一個非常徹底的方式使漸變。請注意,這也取決於您正在使用的min-sdk的版本。我相信sdk-1不支持漸變,但這只是一個假設 –

+0

不,這不是我想要的答案。我創建漸變沒有問題。 – Werasu

回答

2

這將打破Android的N(API 25),出現以下錯誤啓動:

android.content.res.Resources$NotFoundException: Can't find ColorStateList from drawable resource ID... 

這幾乎是同樣的錯誤,因爲這SO issue,並通過一個答覆,error/crash is intentional指出。 我想是因爲Android神們現在正在嚴格禁止你使用@color資源以外的其他顏色。所以,這絕對不是「正確的做法」。

解決方法是使用自定義工具欄您可以在其中使用可繪製漸變作爲背景。

我也嘗試this other solution on SO,號稱爲API 24+工作,但可惜它的API突破25 & 26.它似乎像Android的東西應該簡單地與工作,但少了點..