Comment obtenez-vous un object Drawable à partir d’un identifiant de ressource dans un package Android?

J’ai besoin d’un object Drawable pour l’afficher sur un bouton d’image. Est-il possible d’utiliser le code ci-dessous (ou quelque chose comme ça) pour obtenir un object du package android.R.drawable. *?

par exemple si drawableId était android.R.drawable.ic_delete

mContext.getResources().getDrawable(drawableId) 

 Drawable d = getResources().getDrawable(android.R.drawable.ic_dialog_email); ImageView image = (ImageView)findViewById(R.id.image); image.setImageDrawable(d); 

A partir de l’ API 21 , vous devez utiliser la getDrawable(int, Theme) au lieu de getDrawable(int) , car elle vous permet d’ drawable un object drawable associé à un resource ID particulier pour la screen density/theme . L’appel de la getDrawable(int) deprecated équivaut à appeler getDrawable(int, null) .

Vous devez utiliser le code suivant de la bibliothèque de support à la place:

 ContextCompat.getDrawable(context, android.R.drawable.ic_dialog_email) 

L’utilisation de cette méthode équivaut à appeler:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { return resources.getDrawable(id, context.getTheme()); } else { return resources.getDrawable(id); } 

A partir de l’API 21, vous pouvez également utiliser:

  ResourcesCompat.getDrawable(getResources(), R.drawable.name, null); 

Au lieu de ContextCompat.getDrawable(context, android.R.drawable.ic_dialog_email)

le meilleur moyen est

  button.setBackgroundResource(android.R.drawable.ic_delete); 

OU ceci pour Drawable left et quelque chose comme ça pour le droit, etc.

 int imgResource = R.drawable.left_img; button.setCompoundDrawablesWithInsortingnsicBounds(imgResource, 0, 0, 0); 

et

getResources().getDrawable() est maintenant obsolète