Tengo una imagen res/drawable/test.png
(R.drawable.test).
Quiero pasar esta imagen a una función que acepte Drawable
, por ejemplo mButton.setCompoundDrawables()
.
Entonces, ¿cómo puedo convertir un recurso de imagen en a Drawable
?
Su actividad debe tener el método getResources. Hacer:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
Este código está en desuso:
Use esto en su lugar:
fuente
ResourcesCompat.getDrawable(getResources(), R.drawable.icon, null);
(donde el tercer parámetro es una instancia de Tema opcional).El
getDrawable (int id)
método se deprecia a partir de la API 22.En su lugar, debe usar la
getDrawable (int id, Resources.Theme theme)
API 21+El código se vería así.
fuente
getResources().getDrawable(R.drawable.ic_warning_80dp, context?.theme)
Solo me gustaría agregar que si recibe un mensaje "obsoleto" cuando usa getDrawable (...), debe usar el siguiente método de la biblioteca de soporte.
No tiene que usar getResources () cuando usa este método.
Esto es equivalente a hacer algo como
Esto funciona en versiones anteriores y posteriores a Lollipop.
fuente
Obtenga Drawable de un recurso vectorial independientemente de si es vector o no:
Nota:
ContextCompat.getDrawable(context, R.drawable.icon);
produciráandroid.content.res.Resources$NotFoundException
para el recurso vectorial.fuente
Si está intentando obtener el dibujable desde la vista donde se establece la imagen como,
entonces el sorteo devolverá solo un valor nulo con el siguiente código ...
Por lo tanto, es mejor configurar la imagen con el siguiente código, si desea recuperar el dibujo de una vista en particular.
solo entonces el dibujable convertiremos exactamente.
fuente
Si está heredando de un fragmento, puede hacer:
Drawable drawable = getActivity().getDrawable(R.drawable.icon)
fuente