GetColorStateList устарел

У меня проблема. Я только что обновил с sdk 22 до 23, и предыдущая версия "getColorStateList()" устарела.

Мой код был таким

seekBar.setProgressTintList(getResources().getColorStateList(R.color.bar_green));
valorslide.setTextColor(getResources().getColorStateList(R.color.text_green));

Более старый "getColorStateList" был

getColorStateList(int id)

И новый

getColorStateList(int id, Resources.Theme theme)

Как использовать переменную "Тема"? Спасибо заранее

Ответы

Ответ 1

Объект Тема - это тема, которая используется для стиля списка состояний цвета. Если вы не используете специальные темы с отдельными ресурсами, вы можете передать null или текущую тему следующим образом:

TextView valorslide; // initialize
SeekBar seekBar; // initialize
Context context = this;
Resources resources = context.getResources();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
    seekBar.setProgressTintList(resources.getColorStateList(R.color.bar_green, context.getTheme()));
    valorslide.setTextColor(resources.getColorStateList(R.color.text_green, context.getTheme()));
} else {
    seekBar.setProgressTintList(resources.getColorStateList(R.color.bar_green));
    valorslide.setTextColor(resources.getColorStateList(R.color.text_green));
}

Если вам не нужна тема, вы можете просто передать null:

getColorStateList(R.color.text_green, null)

Подробнее см. документацию. Примечание. Вам нужно использовать только новую версию API 23 (Android Marshmallow) и выше.

Ответ 2

В то время как ответ anthonycr работает, гораздо проще записывать

ContextCompat.getColorStateList(context, R.color.haml_indigo_blue);

Ответ 3

Вам нужно использовать ContextCompat.getColor(), который является частью библиотеки поддержки V4 (поэтому он будет работать для всего предыдущего API).

ContextCompat.getColor(context, R.color.my_color)