我想设置一个视图的背景绘图。这有两个方法(据我所知):setBackground和setBackgroundDrawable。
当我使用setBackground时,它说它已添加在API级别16,但我的项目的最小SDK版本是7。我猜在16秒以下就不管用了,对吗?但当我使用setBackgroundDrawable时,它说它已弃用。
我应该用什么?
我想设置一个视图的背景绘图。这有两个方法(据我所知):setBackground和setBackgroundDrawable。
当我使用setBackground时,它说它已添加在API级别16,但我的项目的最小SDK版本是7。我猜在16秒以下就不管用了,对吗?但当我使用setBackgroundDrawable时,它说它已弃用。
我应该用什么?
当前回答
它被弃用了,但仍然可以使用,所以你可以使用它。但如果你想完全正确,只是为了它的完整性……你可以这样做:
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
setBackgroundDrawable();
} else {
setBackground();
}
为此,你需要将buildTarget api设置为16,并将min build设置为7或类似的东西。
其他回答
它被弃用了,但仍然可以使用,所以你可以使用它。但如果你想完全正确,只是为了它的完整性……你可以这样做:
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
setBackgroundDrawable();
} else {
setBackground();
}
为此,你需要将buildTarget api设置为16,并将min build设置为7或类似的东西。
使用ViewCompat。setBackground(视图、背景);
我知道这是一个老问题,但我也有类似的情况,我的解决方案是
button.setBackgroundResource( R.drawable.ic_button );
Drawable d = button.getBackground();
然后你可以使用“绘制”,应用颜色滤镜等等
现在您可以使用这两个选项中的任何一个。这在任何情况下都是可行的。 你的颜色可以是十六进制代码,像这样:
myView.setBackgroundResource(ContextCompat.getColor(context, Color.parseColor("#FFFFFF")));
一个颜色资源,像这样:
myView.setBackgroundResource(ContextCompat.getColor(context,R.color.blue_background));
或者一个自定义的xml资源,像这样:
myView.setBackgroundResource(R.drawable.my_custom_background);
希望能有所帮助!
我也有这个问题,但我做了一个工作使用ImageView。
尝试使用RelativeLayout并在其中添加一个ImageView(宽度和高度:fill_parent, scaleType: center)。
同时确保imageview是RelativeLayout中的第一个元素,因此它将作为背景。