preThe lollipop上的getTheme()。resolveAttribute()替代方案

时间:2016-02-15 19:16:16

标签: android declare-styleable styleable

我一直在努力使用pre-lollipop API获取样式属性。

使用棒棒糖,我使用

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 个答案:

答案 0 :(得分: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 全部:)