setBackgroundDrawable()已弃用
所以我的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) { ... }
你可以看到这个线程的更多信息,所有这一切。
也许你可以试试以下内容:
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); }
你得到一个错误,因为getResources()。getDrawable()接受一个id(int)不是一个可绘制的参数。 尝试这个:
layout.setBackground(getResources().getDrawable(R.id.img_wstat_tstorm));
这在我的情况是正确的解决这个问题
imageView.setBackgroundResource(images[productItem.getPosition()]);
我正在使用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
BitmapDrawable background = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.mipmap.Nome_imgem)); getSupportActionBar().setBackgroundDrawable(background);