web-dev-qa-db-ja.com

非推奨のsetBackgroundDrawable()

だから私のSDKは15から21になり、setBackgroundDrawable()を呼び出すと、Android St​​udioは非推奨であると教えてくれます。

私はそれを使って回ることを考えました:

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

しかし、その後、「setBackground()」でエラーが発生します。

それでは、どのように対処しますか?

67
Makoto

興味深いトピックです。あなたのやり方は正しいようです。実際には、単なる命名決定の変更です。 この答え が指摘するように、setBackground()setBackgroundDrawable()を呼び出すだけです:

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

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

このすべての詳細については、 this thread を参照してください。

89
Alex K

多分あなたは次を試すことができます:

setBackgroundResource(R.drawable.img_wstat_tstorm);
22
hedgehog

このメソッドは廃止されているためおもしろいですが、Androidソースコードを見ると、次のことがわかります。

   /**
     * 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

2018年8月15日時点で正しい

サポートライブラリを使用する

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

GetResources()。getDrawable()が引数としてドロアブルではなくid(int)を取るため、エラーが発生します。これを試して:

layout.setBackground(getResources().getDrawable(R.id.img_wstat_tstorm));

3
David C Adams

これは私の場合は正しいですこの問題を解決します

 imageView.setBackgroundResource(images[productItem.getPosition()]);
2
Sonu Kumar
//Java
view.setBackground(ActivityCompat.getDrawable(context, R.drawable.bg))

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

2018年11月23日現在

コトリン:

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

Themeパラメーターを含める場合。

0

私はminSdkVersion 16とtargetSdkVersion 23を使用しています

使用する代わりに:layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));

むしろ使用:

layout.setBackground(ContextCompat.getDrawable(getActivity(), R.drawable.img_wstat_tstorm));

getActivity()はフラグメントで使用されます。アクティビティから呼び出す場合はthisを使用します

0
Vostro