Jadi SDK saya berubah dari 15 menjadi 21 dan ketika saya menelepon setBackgroundDrawable()
, Android Studio memberi tahu saya bahwa itu sudah usang.
Saya berpikir untuk memutarnya menggunakan:
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.img_wstat_tstorm));
} else {
layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));
}
Tapi kemudian, saya mendapatkan kesalahan di "setBackground ()".
Jadi, bagaimana Anda menghadapinya?
Jawaban:
Itu topik yang menarik. Cara Anda melakukannya ternyata benar. Ini sebenarnya hanya perubahan keputusan penamaan. Seperti yang ditunjukkan jawaban ini ,
setBackground()
panggil sajasetBackgroundDrawable()
:public void setBackground(Drawable background) { //noinspection deprecation setBackgroundDrawable(background); } @Deprecated public void setBackgroundDrawable(Drawable background) { ... }
Anda dapat melihat utas ini untuk informasi lebih lanjut tentang semua ini.
sumber
setBackground()
itu tidak akan berfungsi untuk pra API16, alternatifnya bisa jadisetBackgroundResource
mungkin Anda bisa mencoba yang berikut ini:
setBackgroundResource(R.drawable.img_wstat_tstorm);
sumber
Itu lucu karena metode itu sudah usang, tetapi jika Anda melihat Kode Sumber Android Anda akan menemukan ini:
/** * Set the background to a given Drawable, or remove the background. If the * background has padding, this View's padding is set to the background's * padding. However, when a background is removed, this View's padding isn't * touched. If setting the padding is desired, please use * {@link #setPadding(int, int, int, int)}. * * @param background The Drawable to use as the background, or null to remove the * background */ public void setBackground(Drawable background) { //noinspection deprecation setBackgroundDrawable(background); }
sumber
Dikoreksi per 15 Agustus 2018
Gunakan perpustakaan dukungan
Drawable drawable = ResourcesCompat.getDrawable(getResources(), drawableRes, null); ViewCompat.setBackground(layout, drawable);
sumber
Anda mendapatkan kesalahan karena getResources (). GetDrawable () menggunakan id (int) bukan drawable sebagai argumennya. Coba ini:
layout.setBackground(getResources().getDrawable(R.id.img_wstat_tstorm));
sumber
Gunakan ini:
myView.background = ContextCompat.getDrawable(context, R.id.my_drawable)
sumber
//Java view.setBackground(ActivityCompat.getDrawable(context, R.drawable.bg)) //Kotlin view.background = ActivityCompat.getDrawable(context, R.drawable.bg)
sumber
Ini benar dalam kasus saya. Selesaikan masalah ini
imageView.setBackgroundResource(images[productItem.getPosition()]);
sumber
Dikoreksi per 23 November 2018
Kotlin:
Jika Anda menyertakan parameter Tema.
sumber
Saya menggunakan minSdkVersion 16 dan targetSdkVersion 23 Berikut ini bekerja untuk saya, menggunakan ContextCompat.getDrawable (konteks, R.drawable.drawable);
Daripada menggunakan:
layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));
Lebih suka digunakan:
layout.setBackground(ContextCompat.getDrawable(getActivity(), R.drawable.img_wstat_tstorm));
getActivity()
digunakan dalam fragmen, jika dipanggil dari penggunaan aktivitasthis
sumber
BitmapDrawable background = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.mipmap.Nome_imgem)); getSupportActionBar().setBackgroundDrawable(background);
sumber