だから私のSDKは15から21になり、setBackgroundDrawable()
を呼び出すと、Android Studioは非推奨であると教えてくれます。
私はそれを使って回ることを考えました:
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()」でエラーが発生します。
それでは、どのように対処しますか?
興味深いトピックです。あなたのやり方は正しいようです。実際には、単なる命名決定の変更です。 この答え が指摘するように、setBackground()
はsetBackgroundDrawable()
を呼び出すだけです:
public void setBackground(Drawable background) {
//noinspection deprecation
setBackgroundDrawable(background);
}
@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }
このすべての詳細については、 this thread を参照してください。
多分あなたは次を試すことができます:
setBackgroundResource(R.drawable.img_wstat_tstorm);
このメソッドは廃止されているためおもしろいですが、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);
}
2018年8月15日時点で正しい
サポートライブラリを使用する
Drawable drawable = ResourcesCompat.getDrawable(getResources(), drawableRes, null);
ViewCompat.setBackground(layout, drawable);
GetResources()。getDrawable()が引数としてドロアブルではなくid(int)を取るため、エラーが発生します。これを試して:
layout.setBackground(getResources().getDrawable(R.id.img_wstat_tstorm));
これは私の場合は正しいですこの問題を解決します
imageView.setBackgroundResource(images[productItem.getPosition()]);
//Java
view.setBackground(ActivityCompat.getDrawable(context, R.drawable.bg))
//Kotlin
view.background = ActivityCompat.getDrawable(context, R.drawable.bg)
2018年11月23日現在
コトリン:
view.background = resources.getDrawable(R.drawable.ic_image,theme)
Themeパラメーターを含める場合。
私は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
を使用します