He utilizado context.getDrawable() como esto en mi proyecto:

Drawable greenProgressbar = context.getDrawable(R.drawable.custom_progressbargreen);

Eclipse pero me está dando un error de que no se necesita un Minimum API level of 21. Esto significaría que después de una rápida búsqueda en google mi APLICACIÓN sólo será utilizable en Android 5.0. Dado que no todos los dispositivos que utilizan esta versión de android, me gustaría tener una alternativa para context.getDrawable().

InformationsquelleAutor Bram | 2015-01-06

7 Comentarios

  1. 182

    La aceptada previamente método se ha dejado de utilizar, de acuerdo con el SDK de 22 documentación:

    Antes de android.os.Construir.VERSION_CODES#JELLY_BEAN, esta función no correctamente recuperar la configuración final de la densidad cuando el recurso ID pasado por aquí es un alias a otro Dibujable de recursos. Esto significa que si la densidad de configuración del alias de recursos es diferente de la de los recursos, la densidad de la devuelve Dibujable sería incorrecta, lo que resulta en mala escala.

    Como se señaló en esta respuesta mejor solución sería el uso de ContextCompat:
    ContextCompat.getDrawable(context, R.drawable.***)

    • Esto es correcto
    • He aceptado esta respuesta ahora, ya que es más relevante 🙂
  2. 24

    Trate de añadir un getResources() después de que el contexto, por lo que este:

    Drawable greenProgressbar = context.getResources().getDrawable(R.drawable.custom_progressbargreen);

    debería funcionar.

    • Recursos.getDrawable fue despreciado en favor de Contexto.getDrawable
  3. 9

    He tenido un problema similar antes. ¿Has probado a hacerlo así?

    Drawable greenProgressbar = context.getResources().getDrawable(R.drawable.custom_progressbargreen);
  4. 9

    Tuve una misma situación que yo quería hacer referencia a getDrawable() método que está ahora en desuso.

    lo he usado,

    myButton.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.ic_btn_off));

    Espero que esto le ayudará

  5. 0

    Debe utilizar » getDrawable(id, este.getTheme()) «. Este método no es obsoleto hasta ahora.

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        view.setBackground(getResources().getDrawable(R.drawable.radioline,this.getTheme()));
    } else {
       view.setBackground(getResources().getDrawable(R.drawable.radioline));
    }
  6. 0

    Estoy de acuerdo en el uso de ContextCompact.getDrawable(Contexto contexto, int resID). Funcionó para mí y mi aplicación de los objetivos de la API 19.

Dejar respuesta

Please enter your comment!
Please enter your name here