2016-02-15 104 views
0

我一直在努力通過預棒棒糖API獲取樣式屬性。getTheme()。resolveAttribute()替代前棒棒糖

棒棒糖,我用

final TypedValue statusBarColor = new TypedValue(); 
getTheme().resolveAttribute(android.R.attr.colorPrimaryDark, statusBarColor, true); 
STATUS_BAR_COLOR = ContextCompat.getColor(this, statusBarColor.resourceId); 

這完美的作品,我還沒有發現類似的方式來做到這一點API版本低於21(minAPI = 16)

我嘗試使用getTheme().obtainStyledAttributes() 。但是,我沒有AttributeSet提供給該方法,因爲我在一個活動中使用了這個方法。我是否做了完全錯誤的事情,或者正在解決21版以下API版本不支持的樣式屬性?

回答

1

試試這個代碼

TypedValue typedValue = new TypedValue(); 
    getTheme().resolveAttribute(R.attr.colorPrimaryDark, typedValue, true); 
    STATUS_BAR_COLOR = ContextCompat.getColor(this, typedValue.resourceId); 

不需要的android.R.attr.colorPrimaryDark,而應該使用R.attr.colorPrimaryDark這就是所有:)

+0

這是一個很好的,我甚至沒有發現那個,但這並不能回答我的問題。 resolveAttribute方法在API 16上不可用,直到21 – tim687

+0

您是否使用AppCompatActivity,然後「resolveAttribute」可用:) – Darish

+0

嗯,我不知道爲什麼Android Studio會抱怨這一點,但現在已經不復存在了。謝謝! – tim687