Resources.getColor(int id)
Метод является устаревшим.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
Что мне делать?
Resources.getColor(int id)
Метод является устаревшим.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
Что мне делать?
Ответы:
Начиная с библиотеки поддержки Android 23,
добавлен новый метод getColor ()
ContextCompat
.Его описание с официального JavaDoc:
Итак, просто позвоните :
Вы можете проверить
ContextCompat.getColor()
исходный код на GitHub .источник
ТЛ; др:
Объяснение:
Вам нужно будет использовать ContextCompat.getColor () , который является частью библиотеки Support V4 (она будет работать для всех предыдущих API).
Если вы еще не используете библиотеку поддержки, вам нужно добавить следующую строку в
dependencies
массив внутри вашего приложенияbuild.gradle
(примечание: это необязательно, если вы уже используете библиотеку appcompat (V7) ):Если вам небезразличны темы, в документации указано, что:
источник
M
, возвращаемый цвет будет стиль для темы указанного контекста в. »ContextCompat
класс поставляется из SupportV4. AppcompatV7 тоже работает, так как полагается на SupportV4. Как говорится в документации библиотеки поддержки ,This library depends on the v4 Support Library. If you are using Ant or Eclipse, make sure you include the v4 Support Library as part of this library's classpath.
. Так что имеет смысл не вставлятьAppcompatV7
в ответ.Я не хочу включать библиотеку поддержки только для getColor , поэтому я использую что-то вроде
Я думаю, что код должен работать просто отлично, и устаревший
getColor
не может исчезнуть из API <23.И вот что я использую в Kotlin:
источник
В Android Marshmallow многие методы устарели.
Например, чтобы получить цвет использовать
Также, чтобы получить возможность рисования
источник
Для всех пользователей Kotlin:
источник
val color = ContextCompat.getColor(context, R.color.colorPrimary)
. Переменная «это» может быть чем угодно, но это должен быть контекст .it
в этом случаеcontext
, так как я использую,context?.let {
чтобы проверитьcontext
, не является ли NULL. ФункцияgetColor()
принимает только ненулевой контекст. Подробнее оlet
том, как его использовать, читайте здесь : kotlinlang.org/docs/reference/scope-functions.html#letВ вашем RecyclerView в Котлине
источник
Используйте
getColor(Resources, int, Theme)
метод изResourcesCompat
библиотеки поддержки Android.Я думаю , что лучше отражать ваш вопрос , чем
getColor(Context, int)
изContextCompat
так вы спрашиваетеResources
. До уровня API 23 тема не будет применена, и метод вызывается,getColor(int)
но у вас не будет устаревшего предупреждения. Тема тоже может бытьnull
.источник
Если вам не нужны ресурсы, используйте
parseColor(String)
:Color.parseColor("#cc0066")
источник
Если ваш текущий мин. Уровень API равен 23, вы можете просто использовать его,
getColor()
как мы используем, чтобы получить строковые ресурсыgetString()
:Вы можете ограничить уровень API ниже 23:
но для простоты, вы можете сделать, как показано ниже, как принятый ответ:
Из ресурсов .
Из ContextCompat AndroidX .
Из поддержки ContextCompat
источник
Я тоже расстроился. Моя потребность была очень простой. Все, что я хотел, это цвет ARGB от ресурсов, поэтому я написал простой статический метод.
источник