getTheme().resolAttribute() альтернатива перед леденцом на палочке

Я изо всех сил пытался получить стилизованные атрибуты с API pre-lollipop.

С леденцом я пользуюсь

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 чтобы обеспечить этот метод, так как я использую это внутри деятельности. Я делаю что-то не так или разрешает стилизованные атрибуты, которые не поддерживаются в версиях API ниже 21?

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 Вот и все:)

Другие вопросы по тегам