Saya memiliki gambar res/drawable/test.png
(R.drawable.test).
Saya ingin meneruskan gambar ini ke fungsi yang menerima Drawable
, misalnya mButton.setCompoundDrawables()
.
Jadi bagaimana saya bisa mengubah sumber daya gambar ke Drawable
?
Aktivitas Anda harus memiliki metode getResources. Melakukan:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
Kode ini sudah usang:
Gunakan ini sebagai gantinya:
sumber
ResourcesCompat.getDrawable(getResources(), R.drawable.icon, null);
(di mana param ke-3 adalah instance Tema opsional).The
getDrawable (int id)
Metode disusutkan sebagai API 22.Sebaliknya, Anda harus menggunakan
getDrawable (int id, Resources.Theme theme)
untuk API 21+Kode akan terlihat seperti ini.
sumber
getResources().getDrawable(R.drawable.ic_warning_80dp, context?.theme)
Saya hanya ingin menambahkan bahwa jika Anda mendapatkan pesan "usang" saat menggunakan getDrawable (...), Anda harus menggunakan metode berikut dari pustaka dukungan.
Anda tidak harus menggunakan getResources () saat menggunakan metode ini.
Ini setara dengan melakukan sesuatu seperti
Ini berfungsi baik pada versi pre dan post Lollipop.
sumber
Dapatkan Drawable dari sumber daya vektor terlepas dari, apakah vektornya atau tidak:
Catatan:
ContextCompat.getDrawable(context, R.drawable.icon);
akan menghasilkanandroid.content.res.Resources$NotFoundException
sumber daya vektor.sumber
Jika Anda mencoba untuk mendapatkan gambar dari tampilan tempat gambar diatur sebagai,
maka drawable hanya akan mengembalikan nilai nol dengan kode berikut ...
Jadi, lebih baik mengatur gambar dengan kode berikut, jika Anda ingin mengambil gambar dari tampilan tertentu.
hanya dengan drawable yang akan kita konversi dengan tepat.
sumber
Jika Anda mewarisi dari sebuah fragmen yang dapat Anda lakukan:
Drawable drawable = getActivity().getDrawable(R.drawable.icon)
sumber