web-dev-qa-db-fra.com

setBackgroundDrawable () obsolète

Ainsi, mon disque SDK passe de 15 à 21 et lorsque j'appelle setBackgroundDrawable(), Android Studio me dit qu'il est obsolète.

J'ai pensé faire le tour en utilisant:

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));
}

Mais alors, j'obtiens une erreur à "setBackground ()".

Alors, comment vous y prendriez-vous?

60
Makoto

C'est un sujet intéressant. La façon dont vous le faites est correcte, apparemment. C'est en fait juste un changement de décision de nommage. Comme cette réponse indique, setBackground() appelle simplement setBackgroundDrawable():

public void setBackground(Drawable background) {
    //noinspection deprecation
    setBackgroundDrawable(background);
}

@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }

Vous pouvez voir ce fil pour plus d’informations sur tout cela. 

84
Alex K

peut-être que vous pouvez essayer ce qui suit:

setBackgroundResource(R.drawable.img_wstat_tstorm);
19
hedgehog

C'est drôle parce que cette méthode est obsolète, mais si vous regardez le code source Android, vous trouverez ceci:

   /**
     * 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);
    }
17
Joaquin Iurchuk

Correct au 15 août 2018

Utilisez les bibliothèques de support

Drawable drawable = ResourcesCompat.getDrawable(getResources(), drawableRes, null);
ViewCompat.setBackground(layout, drawable);
5
Stuart Campbell

Ceci est correct dans mon cas Résoudre ce problème 

 imageView.setBackgroundResource(images[productItem.getPosition()]);
2
Sonu Kumar

Correct au 23 novembre 2018

Kotlin:

view.background = resources.getDrawable(R.drawable.ic_image,theme)

Si vous incluez le paramètre Theme.

0
Dimitri de Jesus
//Java
view.setBackground(ActivityCompat.getDrawable(context, R.drawable.bg))

//Kotlin 
view.background = ActivityCompat.getDrawable(context, R.drawable.bg)
0
EliaszKubala