Je dois obtenir un objet Drawable à afficher sur un bouton d'image. Existe-t-il un moyen d'utiliser le code ci-dessous (ou quelque chose du genre) pour obtenir un objet à partir 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);
À compter de API 21, vous devez utiliser la méthode getDrawable(int, Theme)
au lieu de getDrawable(int)
, car elle vous permet de récupérer un objet drawable
associé à un resource ID
particulier pour le étant donné screen density/theme
. Appeler la méthode deprecated
getDrawable(int)
équivaut à appeler getDrawable(int, null)
.
Vous devriez plutôt utiliser le code suivant de la bibliothèque de support:
ContextCompat.getDrawable(context, Android.R.drawable.ic_dialog_email)
Utiliser cette méthode revient à appeler:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
return resources.getDrawable(id, context.getTheme());
} else {
return resources.getDrawable(id);
}
À 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)
la meilleure façon est
button.setBackgroundResource(Android.R.drawable.ic_delete);
OU this pour Drawable left et quelque chose comme ça pour right etc.
int imgResource = R.drawable.left_img;
button.setCompoundDrawablesWithIntrinsicBounds(imgResource, 0, 0, 0);
et
getResources().getDrawable()
est maintenant obsolète