我必须过度思考这个问题,但当我尝试更改相对布局的背景onClick
时,setBackground
中的错误view
无法设置为{{ 1}}。
以下是一些代码:
int
有些注意事项:
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!check) {
check = true;
relativeLayout.setBackground(R.drawable.bg);
^^^Apparently this is considered an int???
} else {
relativeLayout.setBackgroundColor(Color.WHITE);
check = false;
}
}
});
和Btn1
在这一小段代码之外被正确识别。
我试图在网站上寻找类似的问题,但只能找到一个。解决方案是使用relativeLayout
并将Bitmap Factory
设置为Background
。这对我来说不是解决方案。此外,我尝试访问的背景已放置在drawable文件夹中,全部为小写名称,为.png。此外,我已经构建,重建和清理项目 - 同样的错误。帮助答案 0 :(得分:2)
R.(anything).(anything)
不是特定对象,它是资源所在的地址,从已编译资源的角度来看。它不是可绘制的,当你使用这个id相对于你的上下文API时,你可以从该id获得一个drawable。
你想要的是
(View).setBackgroundResouce(id)
http://developer.android.com/reference/android/view/View.html#setBackgroundResource(int)
期待抽奖。阅读API以了解如何以及何时使用它们。
答案 1 :(得分:0)
请改用setBackgroundResource()方法。请尝试以下代码:
relativeLayout.setBackgroundResource(R.drawable.bg);
或尝试以下方法:
Drawable drawable = ContextCompat.getDrawable(context, R.drawable.bg);
relativeLayout.setBackground(drawable);
答案 2 :(得分:0)
setBackground采用Drawable而不是资源ID。当你编写R.drawable.bg时,它将返回资源id(int)。
因此,使用资源中定义的图像设置背景可以通过两种方式完成,
使用setBackground
relativeLayout.setBackground(getResources().getDrawable(R.drawable.bg))
使用setBackgroundResource
relativeLayout.setBackgroundResource(R.drawable.bg);