我发现自己再次尝试在我的Android应用程序中使用当前主题中设置的资源并遇到困难。
根据粗略指南找到here主题属性值重用
我原本试图像这样创建一个选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="?android:attr/selectableItemBackground" />
<item android:drawable="@color/transparent" />
</selector>
按下状态drawable被声明为
<item name="selectableItemBackground">@android:drawable/item_background</item>
在当前的ICS主题xml doc themes xml doc 中。这在eclispse中编译得很好(如果我拼写attr错了它会给出一个错误或者reffng @android:drawable / item_background会直接告诉我drawable本身是私有的。)
当我运行应用程序时,我得到了
FATAL EXCEPTION: main
E / AndroidRuntime (18815): android.view.InflateException: Binary XML file line #14: Error inflating class <unknown>
除了使用此选择器的ImageViews android:background
属性值的xml文件之外,没有任何其他有用信息。我知道有一个错误,colorStateLists不能用作背景as mentioned here,也许这也适用于引用主题中的drawables的drawableState列表。但我知道它确实有效,正如上面提到的那样。
我错过了什么吗?在尝试做这样的事情的时候,我总是遇到一些我不明白的事情,所以会对任何指针感到高兴。
感谢您的帮助
修改
作为另一个体验,我尝试在主题中为引用的drawable设置别名,如
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="?android:attr/selectableItemBackground" ></bitmap>
并直接使用此作为背景,但这也不起作用。查看别名,他们只能参考实际图像,所以这是有道理的
编辑2
我发现另一个直接使用它的测试
android:background="?android:attr/selectableItemBackground"
确实有效。因此,似乎在别名或选择器中使用它是不快乐的地方。奇怪,因为我会假设背景和相同的arg
编辑3
似乎主题attr我指的是实际上是一个选择器instelf,我肯定没有帮助这个问题!我以为我会猜到看它的名字
答案 0 :(得分:1)
我想我在编辑中自己回答了这个问题 - 我想到的主要问题是我试图在选择器中引用一个选择器。