Android resources getcolor deprecated

getColor (int id) устарел в Android 6.0 Marshmallow (API 23)

Resources.getColor(int id) Метод является устаревшим.

Начиная с библиотеки поддержки Android 23,
добавлен новый метод getColor () ContextCompat .

Его описание с официального JavaDoc:

Возвращает цвет, связанный с конкретным идентификатором ресурса.

Начиная с M, возвращаемый цвет будет стилизован для указанной темы контекста.

Итак, просто позвоните :

Вы можете проверить ContextCompat.getColor() исходный код на GitHub .

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

Если вы еще не используете библиотеку поддержки, вам нужно добавить следующую строку в dependencies массив внутри вашего приложения build.gradle (примечание: это необязательно, если вы уже используете библиотеку appcompat (V7) ):

Если вам небезразличны темы, в документации указано, что:

Начиная с M, возвращаемый цвет будет стилизован для указанной темы контекста.

Я не хочу включать библиотеку поддержки только для getColor , поэтому я использую что-то вроде

Я думаю, что код должен работать просто отлично, и устаревший getColor не может исчезнуть из API — Алекс Ванг
источник

В Android Marshmallow многие методы устарели.

Например, чтобы получить цвет использовать

Также, чтобы получить возможность рисования

Источник

getColor (int id) устарел на Android 6.0 Marshmallow (API 23)

Метод Resources.getColor(int id) устарел.

Что я должен делать?

11 ответов

Начиная с Android Support Library 23,
новый getColor () добавлен в ContextCompat .

Его описание из официального JavaDoc:

Возвращает цвет, связанный с определенным идентификатором ресурса.

Начиная с M, возвращаемый цвет будет стилизован под заданную тему контекста.

Итак, просто позвоните :

Вы можете проверить ContextCompat.getColor() исходный код на GitHub.

В Android Marshmallow многие методы устарели.

Например, чтобы получить цвет, используйте

Также, чтобы получить доступное использование

Я не хочу включать библиотеку поддержки только для getColor , поэтому я использую что-то вроде

Я полагаю, что код должен работать нормально, а устаревший getColor не может исчезнуть из API 49

Читайте также:  Android где находится папка storage

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

Если вы еще не используете библиотеку поддержки, вам нужно будет добавить следующую строку в массив dependencies внутри вашего приложения build.gradle (примечание: это необязательно, если вы уже используете appcompat ( V7) библиотека ):

Если вам интересны темы, в документации указано, что:

Начиная с M, возвращаемый цвет будет стилизован под заданную тему контекста.

Я тоже расстроился. Моя потребность была очень простой. Все, что мне нужно, это цвет ARGB из ресурсов, поэтому я написал простой статический метод.

Если вам не обязательно нужны ресурсы, используйте parseColor(String) :
Color.parseColor(«#cc0066»)

Используйте метод getColor(Resources, int, Theme) для ResourcesCompat из библиотеки поддержки Android.

Думаю, он лучше отражает ваш вопрос, чем getColor(Context, int) из ContextCompat , поскольку вы спрашиваете о Resources . До уровня API 23 тема не будет применяться, а метод вызывает getColor(int) , но вы не получите предупреждения об устаревании. Тема также может быть null .

Если ваш текущий мин. Уровень API — 23, вы можете просто использовать getColor() , как мы используем, для получения строковых ресурсов с помощью getString() :

Вы можете ограничить уровни API ниже 23:

Но для простоты вы можете сделать, как показано ниже, в качестве принятого ответа:

В Котлине вы можете:

Если requireContext () доступен из того места, где вы вызываете функцию. Я получал ошибку при попытке

Источник

GetResources (). GetColor () устарел

Использование: buildToolsVersion «22.0.1» , targetSdkVersion 22 в моем файле градиента.

Я обнаружил, что полезный getResources().getColor(R.color.color_name) устарел.

Что я должен использовать вместо этого?

Похоже, что наилучшим подходом является использование:

Это выберет метод параметра Marshmallow two parameter или метод Pre-Marshmallow.

Ну, он устарел в android M, поэтому вы должны сделать исключение для android M и ниже. Просто добавьте текущую тему в функцию getColor . Вы можете получить текущую тему с помощью getTheme() .

Это сделает трюк в фрагменте, вы можете заменить getActivity() на getBaseContext() , yourContext и т. Д., yourContext содержат ваш текущий контекст

* Ps: цвет устарел в M, но drawable устарел в L

Я обнаружил, что полезный getResources (). GetColor (R.color.color_name) устарел.

В соответствии с документацией он не устарел на уровне API 21.

Читайте также:  Иконка для андроид требования

Он устарел в M Developer Preview. Однако метод замены (двухпараметрический getColor() который принимает идентификатор ресурса цвета и объект Resources.Theme ) доступен только в M Developer Preview.

Следовательно, прямо сейчас продолжайте использовать однопараметрический метод getColor() . Позже в этом году рассмотрим использование двухпараметрического getColor() на устройствах Android M, возвращаясь к устаревшему однопараметрическому методу getColor() на более старых устройствах.

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

Как указано в документации, «Начиная с M, возвращенный цвет будет создан для указанной темы Контекста». Так что не стоит беспокоиться об этом.

Источник

GetColor (int id) устарел на Android 6.0 Marshmallow (API 23)

Метод Resources.getColor(int id) устарел.

Что я могу сделать?

Начиная с Android Support Library 23,
В ContextCompat добавлен новый метод getColor () .

Его описание с официального JavaDoc:

Возвращает цвет, связанный с определенным идентификатором ресурса

Начиная с M, возвращенный цвет будет оформлен для указанной темы Контекста.

Итак, просто позвоните :

Вы можете проверить исходный код ContextCompat.getColor() на GitHub .

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

Если вы еще не используете библиотеку поддержки, вам понадобится добавить следующую строку в массив dependencies внутри вашего приложения build.gradle (обратите внимание: это необязательно, если вы уже используете библиотеку appcompat (V7) ):

Если вам интересны темы, в документации указано, что:

Начиная с M, возвращенный цвет будет оформлен для указанной темы Контекста

Я не хочу включать библиотеку поддержки только для getColor , поэтому я использую что-то вроде

Я думаю, что код должен работать нормально, а устаревший getColor не может исчезнуть из API

В Android Marshmallow многие методы устарели.

Например, чтобы использовать цвет

Также, чтобы получить возможность использования

Самый короткий ответ:

Вы можете использовать:

Я надеюсь, что это помогает. Я тестировал его на Android Marshmallow, и это сработало.

Метод getColor () устарел в API 23 и был введен в ContextCompat. Прежде чем использовать метод getColor () с помощью ContextCompat, добавьте зависимости в скрипте build.gradle, который:

Затем метод getColor () может быть использован как:

В Mono / xamarin.android у меня была такая же проблема, и следующий код работал отлично:

Читайте также:  Планировщик для планшета андроид

В моем случае контекст – это моя деятельность (Android.Support.V7.App.AppCompatActivity), поэтому мой пример с реальным использованием:

Используйте это. Это помогает

Несмотря на то, что getColor() устарел в зефире, метод замены
getColor(int, Theme) доступен. Который может использоваться как альтернатива ContextCompat.getColor(context, R.color.your_color);

См. Это для получения дополнительной информации.

Используйте метод getColor(Resources, int, Theme) ResourcesCompat из Библиотеки поддержки Android.

Я думаю, что это лучше отражает ваш вопрос, чем getColor(Context, int) ContextCompat поскольку вы спрашиваете о Resources . До уровня API 23 эта тема не будет применяться и метод вызовет getColor(int) но у вас не будет устаревшего предупреждения. Тема также может быть null .

Я тоже расстроился. Моя потребность была очень проста. Все, что я хотел, это цвет ARGB из ресурсов, поэтому я написал простой статический метод.

Источник

getResources().getColor () является устаревшим [дубликат]

этот вопрос уже есть ответ здесь:

используя: buildToolsVersion «22.0.1» , targetSdkVersion 22 в моем файле gradle.

Я нашел, что полезно getResources().getColor(R.color.color_name) устарела.

что я должен использовать вместо этого?

4 ответов:

похоже, лучший подход заключается в использовании:

Это позволит выбрать метод двух параметров зефира или метод предварительного зефира соответствующим образом.

ну, это устарело в android M, поэтому вы должны сделать исключение для android M и ниже. Просто добавьте текущую тему на

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

как указано в документации, «начиная с M, возвращаемый цвет будет стилизован для темы указанного контекста». Так что не нужно беспокоиться об этом.

вы можете добавить библиотеку поддержки V4, добавив следующее в массив зависимостей внутри сборки приложения.Gradle в:

я обнаружил, что полезные getResources ().getColor (R. color.color_name) является устаревшим.

он не устарел в API Level 21, согласно документация.

это и устарел в предварительном просмотре M Developer. Однако метод замены (двухпараметрический getColor() Это принимает идентификатор ресурса цвета и Resources.Theme объект) доступен только в предварительном просмотре M Developer.

отсюда, прямо сейчас, продолжайте использовать один параметр getColor() метод. Позже в этом году рассмотрите возможность использования двух параметров getColor() метод на устройствах Android M, возвращаясь к устаревшему однопараметрическому getColor() метод на старых устройствах.

Источник

Оцените статью