简单的任务,奇怪的答案

时间:2016-02-25 06:14:03

标签: android android-studio

我必须过度思考这个问题,但当我尝试更改相对布局的背景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。此外,我已经构建,重建和清理项目 - 同样的错误。帮助

3 个答案:

答案 0 :(得分:2)

R.(anything).(anything)

不是特定对象,它是资源所在的地址,从已编译资源的角度来看。它不是可绘制的,当你使用这个id相对于你的上下文API时,你可以从该id获得一个drawable。

你想要的是

(View).setBackgroundResouce(id)

http://developer.android.com/reference/android/view/View.html#setBackgroundResource(int)

您使用的是http://developer.android.com/reference/android/view/View.html#setBackground(android.graphics.drawable.Drawable)

期待抽奖。阅读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);