在我的应用程序中,我有ImageView,它在其父级的onLayout方法中以编程方式添加。我希望它在按下时具有不同的背景,在正常状态下具有不同的焦点。我在values文件夹中定义了一些颜色:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="cream">#FBF9F5</color>
<color name="green">#93D932</color>
<color name="blue">#0095FF</color>
</resources>
然后我在名为table_background_selector.xml的drawables文件夹中定义了选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@color/green" />:
<item android:state_pressed="true" android:drawable="@color/blue" />:
<item android:drawable="@color/cream" />:
</selector>
然后我初始化它后我的onLayout方法的父我尝试设置背景:
v.setBackground(getContext().getResources().getDrawable(R.drawable.table_background_selector));
当IntelliJ向我展示问题时:
"Cannot resolve method 'setBackground(android.graphics.drawable.Drawable)'"
我无法理解为什么因为View类有方法 setBackground(可绘制背景)
这是我用setImageResource设置的.png:
它的中心是透明的,现在它显示了设置为应用程序的任何背景,但我希望它在按下或聚焦时显示不同的颜色
我会感谢任何帮助
答案 0 :(得分:0)
检查您是否错误地导入了android R
文件而不是本地文件,它看起来确实如此。
更新:
并设置ImageView
背景,请执行以下操作:
image.setImageResource(R.drawable.your_drawable_resource);
答案 1 :(得分:0)
首先清理并构建您的项目仍然会得到相同的错误
请检查导入区域是否包含此声明
导入android.R;
如果是,那么您需要使用包含R的名称,例如my.package.R。