Entonces mi sdk va de 15 a 21 y cuando llamo setBackgroundDrawable()
, Android Studio me dice que está obsoleto.
Pensé en darle la vuelta usando:
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));
}
Pero luego, aparece un error en "setBackground ()".
Entonces, ¿cómo lidiarías con eso?
Respuestas:
Es un tema interesante. La forma en que lo está haciendo es correcta, aparentemente. En realidad, es solo un cambio de decisión de nomenclatura. Como señala esta respuesta ,
setBackground()
solo llamasetBackgroundDrawable()
:public void setBackground(Drawable background) { //noinspection deprecation setBackgroundDrawable(background); } @Deprecated public void setBackgroundDrawable(Drawable background) { ... }
Puede ver este hilo para obtener más información sobre todo esto.
fuente
setBackground()
no funcionará para versiones anteriores de API16, una alternativa podría sersetBackgroundResource
tal vez puedas probar lo siguiente:
setBackgroundResource(R.drawable.img_wstat_tstorm);
fuente
Es gracioso porque ese método está obsoleto, pero si miras el código fuente de Android encontrarás esto:
/** * 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); }
fuente
Correcto al 15 de agosto de 2018
Utilice las bibliotecas de soporte
Drawable drawable = ResourcesCompat.getDrawable(getResources(), drawableRes, null); ViewCompat.setBackground(layout, drawable);
fuente
Está recibiendo un error porque getResources (). GetDrawable () toma un id (int) no un dibujable como argumento. Prueba esto:
layout.setBackground(getResources().getDrawable(R.id.img_wstat_tstorm));
fuente
Utilizar esta:
myView.background = ContextCompat.getDrawable(context, R.id.my_drawable)
fuente
//Java view.setBackground(ActivityCompat.getDrawable(context, R.drawable.bg)) //Kotlin view.background = ActivityCompat.getDrawable(context, R.drawable.bg)
fuente
Esto es correcto en mi caso Resuelve este problema
imageView.setBackgroundResource(images[productItem.getPosition()]);
fuente
Correcto al 23 de noviembre de 2018
Kotlin:
Si incluye el parámetro Theme.
fuente
Estoy usando minSdkVersion 16 y targetSdkVersion 23 Lo siguiente me funciona, usa ContextCompat.getDrawable (context, R.drawable.drawable);
En lugar de usar:
layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));
Más bien use:
layout.setBackground(ContextCompat.getDrawable(getActivity(), R.drawable.img_wstat_tstorm));
getActivity()
se usa en un fragmento, si se llama desde una actividad, usethis
fuente
BitmapDrawable background = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.mipmap.Nome_imgem)); getSupportActionBar().setBackgroundDrawable(background);
fuente