it-swarm-id.com

Bagaimana Anda mendapatkan objek Drawable dari id sumber daya dalam paket Android?

Saya perlu mendapatkan objek Drawable untuk ditampilkan pada tombol gambar. Apakah ada cara untuk menggunakan kode di bawah ini (atau sesuatu seperti itu) untuk mendapatkan objek dari paket Android.R.drawable. *?

misalnya jika drawableId adalah Android.R.drawable.ic_delete

mContext.getResources().getDrawable(drawableId)
142
Blaskovicz
Drawable d = getResources().getDrawable(Android.R.drawable.ic_dialog_email);
ImageView image = (ImageView)findViewById(R.id.image);
image.setImageDrawable(d);
204
Pete Houston

Mulai API 21, Anda harus menggunakan metode getDrawable(int, Theme) alih-alih getDrawable(int), karena memungkinkan Anda untuk mengambil objek drawable yang dikaitkan dengan _resource ID_ tertentu untuk _screen density/theme_ yang diberikan. Memanggil metode deprecatedgetDrawable(int) sama dengan memanggil getDrawable(int, null).

Anda harus menggunakan kode berikut dari perpustakaan dukungan sebagai gantinya:

_ContextCompat.getDrawable(context, Android.R.drawable.ic_dialog_email)
_

Menggunakan metode ini setara dengan menelepon:

_if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
    return resources.getDrawable(id, context.getTheme());
} else {
    return resources.getDrawable(id);
}
_
100

Pada API 21, Anda juga dapat menggunakan:

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

Alih-alih ContextCompat.getDrawable(context, Android.R.drawable.ic_dialog_email)

9
Zain

cara terbaik adalah

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

ATAU ini untuk Drawable left dan sesuatu seperti itu untuk right etc.

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

dan

getResources().getDrawable() sekarang sudah tidak digunakan lagi

2
Inzimam Tariq IT