所以我的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()”收到错误。
那么,你会怎么处理它?</ p>
答案 0 :(得分:87)
这是一个有趣的话题。显然,你做这件事的方式是正确的。它实际上只是一个命名决定的变化。正如this answer指出的那样,setBackground()
只会调用setBackgroundDrawable()
:
public void setBackground(Drawable background) {
//noinspection deprecation
setBackgroundDrawable(background);
}
@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }
您可以查看this thread以获取有关所有这些的更多信息。
答案 1 :(得分:21)
也许您可以尝试以下方法:
setBackgroundResource(R.drawable.img_wstat_tstorm);
答案 2 :(得分:17)
这很有趣,因为该方法已被弃用,但如果您查看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);
}
答案 3 :(得分:7)
截至2018年8月15日更正
使用支持库
data
答案 4 :(得分:3)
您收到错误,因为getResources()。getDrawable()将id(int)作为其参数而不是drawable。试试这个:
layout.setBackground(getResources().getDrawable(R.id.img_wstat_tstorm));
答案 5 :(得分:2)
这在我的情况下是正确的 解决这个问题
imageView.setBackgroundResource(images[productItem.getPosition()]);
答案 6 :(得分:0)
我使用的是minSdkVersion 16和targetSdkVersion 23 以下是我的工作,它使用 ContextCompat.getDrawable(context,R.drawable.drawable);
而不是使用:layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));
而是使用:
layout.setBackground(ContextCompat.getDrawable(getActivity(), R.drawable.img_wstat_tstorm));
getActivity()
,则片段中使用 this
答案 7 :(得分:0)
//Java
view.setBackground(ActivityCompat.getDrawable(context, R.drawable.bg))
//Kotlin
view.background = ActivityCompat.getDrawable(context, R.drawable.bg)
答案 8 :(得分:0)
截至2018年11月23日更正
科特琳:
view.background = resources.getDrawable(R.drawable.ic_image,theme)
如果包含主题参数。
答案 9 :(得分:0)
使用此:
myView.background = ContextCompat.getDrawable(context, R.id.my_drawable)
答案 10 :(得分:-1)
BitmapDrawable background = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.mipmap.Nome_imgem));
getSupportActionBar().setBackgroundDrawable(background);