2016-02-15 54 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