У меня есть изображение res/drawable/test.png
(R.drawable.test).
Я хочу передать это изображение функции, которая принимает Drawable
, например mButton.setCompoundDrawables()
.
Итак, как я могу преобразовать ресурс изображения в Drawable
?
Ваша активность должна иметь метод getResources. Делать:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
Этот код устарел:
Используйте это вместо:
источник
ResourcesCompat.getDrawable(getResources(), R.drawable.icon, null);
(где 3-й параметр является необязательным экземпляром Theme).getDrawable (int id)
Метод амортизации по состоянию API 22.Вместо этого вы должны использовать
getDrawable (int id, Resources.Theme theme)
для API 21+Код будет выглядеть примерно так.
источник
getResources().getDrawable(R.drawable.ic_warning_80dp, context?.theme)
Я просто хотел бы добавить, что если вы получаете сообщение «устарело» при использовании getDrawable (...), вы должны использовать вместо этого следующий метод из библиотеки поддержки.
Вам не нужно использовать getResources () при использовании этого метода.
Это эквивалентно тому, чтобы делать что-то вроде
Это работает как до, так и после версий Lollipop.
источник
Получить Drawable из векторного ресурса, независимо от того, является ли он векторным или нет:
Примечание:
ContextCompat.getDrawable(context, R.drawable.icon);
произведемandroid.content.res.Resources$NotFoundException
для векторного ресурса.источник
Если вы пытаетесь получить отрисовку из вида, где изображение установлено как,
тогда drawable вернет только нулевое значение со следующим кодом ...
Таким образом, лучше установить изображение с помощью следующего кода, если вы хотите получить чертеж из определенного вида.
только тогда мы сможем точно преобразовать Drawable.
источник
Если вы наследуете от фрагмента, вы можете сделать:
Drawable drawable = getActivity().getDrawable(R.drawable.icon)
источник