Использование:
buildToolsVersion "22.0.1"
,
targetSdkVersion 22
в моем файле gradle.
Я обнаружил, что полезный getResources().getColor(R.color.color_name)
устарел.
Что я должен использовать вместо этого?
Использование:
buildToolsVersion "22.0.1"
,
targetSdkVersion 22
в моем файле gradle.
Я обнаружил, что полезный getResources().getColor(R.color.color_name)
устарел.
Что я должен использовать вместо этого?
Похоже, что лучший подход заключается в использовании:
ContextCompat.getColor(context, R.color.color_name)
например:
yourView.setBackgroundColor(ContextCompat.getColor(applicationContext,
R.color.colorAccent))
Это выберет метод двухпараметрического зефира или метод перед зефиром соответственно.
ну, он устарел в android M, поэтому вы должны сделать исключение для android M и ниже. Просто добавьте текущую тему в функцию getColor
. Вы можете получить текущую тему с помощью getTheme()
.
Это сделает трюк в фрагменте, вы можете заменить getActivity()
на getBaseContext()
, yourContext
и т.д., которые сохраняют ваш текущий контекст
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white, getActivity().getTheme()));
}else {
yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white));
}
* p.s: цвет устарел в M, но drawable устарел в L
Вам нужно использовать ContextCompat.getColor(), который является частью библиотеки поддержки V4 (поэтому он будет работать для всего предыдущего API).
ContextCompat.getColor(context, R.color.my_color)
Как указано в документации, "Начиная с M, возвращенный цвет будет оформлен для указанной темы Контекста". Так что не беспокойтесь об этом.
Вы можете добавить библиотеку поддержки V4, добавив следующее в массив зависимостей внутри вашего приложения build.gradle:
compile 'com.android.support:support-v4:23.0.1'
Я обнаружил, что полезный getResources(). getColor (R.color.color_name) устарел.
Он не устарел на уровне API 21, согласно документации.
Он устарел в M Developer Preview. Однако метод замены (двухпараметрический getColor()
, который принимает идентификатор ресурса цвета и объект Resources.Theme
) доступен только в M Developer Preview.
Следовательно, прямо сейчас продолжайте использовать однопараметрический метод getColor()
. Позже в этом году рассмотрим использование двухпараметрического метода getColor()
на устройствах Android M, возвращаясь к устаревшему однопараметрическому методу getColor()
на старых устройствах.