使用当前主题中引用的资源

时间:2012-02-28 13:18:07

标签: android styling

我发现自己再次尝试在我的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,我肯定没有帮助这个问题!我以为我会猜到看它的名字

1 个答案:

答案 0 :(得分:1)

我想我在编辑中自己回答了这个问题 - 我想到的主要问题是我试图在选择器中引用一个选择器。