Использование: buildToolsVersion "22.0.1"
, targetSdkVersion 22
в моем файле градации.getResources(). GetColor() устарел
Я нашел, что полезный getResources().getColor(R.color.color_name)
устарел.
Что следует использовать вместо этого?
Использование: buildToolsVersion "22.0.1"
, targetSdkVersion 22
в моем файле градации.getResources(). GetColor() устарел
Я нашел, что полезный getResources().getColor(R.color.color_name)
устарел.
Что следует использовать вместо этого?
Похоже, что наилучший подход заключается в использовании:
ContextCompat.getColor(context, R.color.color_name)
Это будет выбрать метод параметра Зефир два или предварительно Зефир метод надлежащим образом.
Я нашел, что полезный getResources(). GetColor (R.color.color_name) устарел.
Он не устарел в API Level 21, в соответствии с the documentation.
Это является устаревшим в представлении разработчика M. Однако метод замены (двухпараметрический getColor()
, который принимает идентификатор ресурса цвета и объект Resources.Theme
) доступен только в M Developer Preview.
Следовательно, прямо сейчас продолжайте использовать однопараметрический метод getColor()
. Позже в этом году рассмотрим использование двухпараметрического метода getColor()
на устройствах Android M, возвращаясь к устаревшему однопараметрическому методу getColor()
на старых устройствах.
Вам необходимо использовать ContextCompat.getColor(), который является частью библиотеки поддержки V4 (поэтому он будет работать для всего предыдущего API).
ContextCompat.getColor(context, R.color.my_color)
Как указано в документации, «Начиная с М, возвращаемый цвет будет стиль для темы указанного контекста в». Так что не стоит беспокоиться об этом.
Вы можете добавить библиотеку поддержки V4, добавив следующую строку в массив зависимостей внутри вашего приложения build.gradle:
compile 'com.android.support:support-v4:23.0.1'
хорошо это осуждается в 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));
}
* пс: цвет осуждается в M, но рисуем осуждается в L
Вместо 'getActivity(). getTheme()', я бы использовал getContext(). getTheme() ' –
Его очень полезно. Он работает для меня –
Где вы это видите? http://developer.android.com/reference/android/content/res/Resources.html#getColor (int) –
Это обсуждалось здесь: http://stackoverflow.com/questions/31590714/getcolorint-id-deprecated -on-android-mnc-preview-2 – BrentM
Использовать ContextCompat.getColor (context, R.color.color_name) –