尝试设置相对布局的背景图像
Trying to set a background image of a relativelayout
我正在尝试将背景可绘制图像设置为我拥有的相对布局。我正在使用 setBackground 并且它要求可绘制而不是 int。我可以给它一个可绘制对象,它仍然给我一个错误。这是我的代码的一部分。
rl.setBackground(R.drawable.loginbackground3);
这是我遇到的错误。
setBackground (android.graphics.drawable.Drawable) in View cannot be applied to (int).
很迷茫请帮忙?
您需要使用该可绘制对象引用加载可绘制对象。
Drawable background = rl.getContext().getResources().getDrawable(R.drawable.loginbackground3);
rl.setBackground(background);
请注意,如果您使用的是支持库,则可以像这样解决 getDrawable 的弃用问题:
Drawable background = ContextCompat.getDrawable(rl.getContext(), R.drawable.loginbackground3);
rl.setBackground(background);
试试这个:
rl.setBackgroundResource(R.drawable.loginbackground3);
或者如果你想在这种情况下像你那样做,你需要检查构建版本(如果你正在构建较低版本的)。
final int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
rl.setBackgroundDrawable( getResources().getDrawable(R.drawable.loginbackground3) );
} else {
rl.setBackground( getResources().getDrawable(R.drawable.loginbackground3));
}
//假设你的布局命名为relativelayout1:
RelativeLayout r1 = (RelativeLayout) findViewById(R.id.relativelayout1);
r1.setBackgroundResource(R.drawable.sample);
由于 android 本身的库不一致,
首先,您需要创建方法 getDrawable :
private Drawable getDrawable(int id) {
final int sdk = android.os.Build.VERSION.SDK_INT;
if (sdk >= android.os.Build.VERSION_CODES.LOLLIPOP) {
return ContextCompat.getDrawable(getContext(), id);
} else {
return getContext().getResources().getDrawable(id);
}
}
然后,创建方法 setBackgroundView :
private void setBackgroundView(View v, int drawable_Rid) {
Drawable background = getDrawable(drawable_Rid);
final int sdk = android.os.Build.VERSION.SDK_INT;
if (sdk >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
v.setBackground(background);
} else {
v.setBackgroundDrawable(background);
}
}
最后用这样的可绘制名称调用 setBackgroundView :
setBackgroundView(rl, R.drawable.loginbackground3);
我正在尝试将背景可绘制图像设置为我拥有的相对布局。我正在使用 setBackground 并且它要求可绘制而不是 int。我可以给它一个可绘制对象,它仍然给我一个错误。这是我的代码的一部分。
rl.setBackground(R.drawable.loginbackground3);
这是我遇到的错误。
setBackground (android.graphics.drawable.Drawable) in View cannot be applied to (int).
很迷茫请帮忙?
您需要使用该可绘制对象引用加载可绘制对象。
Drawable background = rl.getContext().getResources().getDrawable(R.drawable.loginbackground3);
rl.setBackground(background);
请注意,如果您使用的是支持库,则可以像这样解决 getDrawable 的弃用问题:
Drawable background = ContextCompat.getDrawable(rl.getContext(), R.drawable.loginbackground3);
rl.setBackground(background);
试试这个:
rl.setBackgroundResource(R.drawable.loginbackground3);
或者如果你想在这种情况下像你那样做,你需要检查构建版本(如果你正在构建较低版本的)。
final int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
rl.setBackgroundDrawable( getResources().getDrawable(R.drawable.loginbackground3) );
} else {
rl.setBackground( getResources().getDrawable(R.drawable.loginbackground3));
}
//假设你的布局命名为relativelayout1:
RelativeLayout r1 = (RelativeLayout) findViewById(R.id.relativelayout1);
r1.setBackgroundResource(R.drawable.sample);
由于 android 本身的库不一致, 首先,您需要创建方法 getDrawable :
private Drawable getDrawable(int id) {
final int sdk = android.os.Build.VERSION.SDK_INT;
if (sdk >= android.os.Build.VERSION_CODES.LOLLIPOP) {
return ContextCompat.getDrawable(getContext(), id);
} else {
return getContext().getResources().getDrawable(id);
}
}
然后,创建方法 setBackgroundView :
private void setBackgroundView(View v, int drawable_Rid) {
Drawable background = getDrawable(drawable_Rid);
final int sdk = android.os.Build.VERSION.SDK_INT;
if (sdk >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
v.setBackground(background);
} else {
v.setBackgroundDrawable(background);
}
}
最后用这样的可绘制名称调用 setBackgroundView :
setBackgroundView(rl, R.drawable.loginbackground3);