我正在尝试将背景可绘制图像设置为我拥有的relativelayout。我正在使用setBackground,它要求drawable而不是int。我可以给它一个drawable,它仍然给我一个错误。这是我的代码的一部分。
rl.setBackground(R.drawable.loginbackground3);
这是我遇到的错误。
setBackground (android.graphics.drawable.Drawable) in View cannot be applied to (int).
非常困惑请帮帮忙?
答案 0 :(得分:1)
您需要使用该drawable引用加载drawable。
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);
答案 1 :(得分:1)
试试这个:
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));
}
答案 2 :(得分:0)
//假设您的布局名为relativelayout1:
public void intervalPost(View view) {
try {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://requestb.in/")
.addConverterFactory(GsonConverterFactory.create())
.build();
PostInterface service = retrofit
.create(PostInterface.class);
.postTime(time2)
.enqueue(new Callback<Response>() {
@Override
public void onResponse(Call<Response> call, Response<Response> response) {
// code here
}
@Override
public void onFailure(Call<Response> call, Throwable t) {
// code here
}
});
} catch (IOException Ex) {
}
}
答案 3 :(得分:0)
由于来自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);