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

8 浏览
0 Comments

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

我发现自己再次尝试在我的Android应用程序中使用当前主题中的资源,并遇到了困难。

遵循此处找到的主题属性值重用的粗略指南

我最初尝试创建一个选择器,如下所示:



    
    

其中按下状态的drawable如下声明:

@android:drawable/item_background

在当前的ICS主题xml文档中themes xml doc 中编译时没有问题(如果我拼写错误,它会给出错误,或者直接引用@android:drawable/item_background会告诉我drawable本身是私有的)。

当我运行应用程序时,我会得到一个

FATAL EXCEPTION: main
E / AndroidRuntime (18815): android.view.InflateException: Binary XML file line #14: Error inflating class 

除了使用此选择器的xml文件以及ImageViews android:background属性值之外,没有其他有用的信息。我知道存在一个bug,即无法将colorStateLists用作背景如此所述,也许这也适用于引用主题中的drawable的drawableState列表。然而,我知道它确实可以工作,因为所提到的帖子中有描述。

我在这里漏掉了什么吗?每当我尝试做这种事情时,我总是遇到一些我不理解的东西,所以对任何指点感到高兴。

感谢任何帮助

编辑

作为另一个实验,我尝试在主题中为引用的drawable设置一个别名,如下所示



并直接将其用作背景,但这也不起作用。查看别名时,它们只能引用实际图像,所以这是有道理的

编辑2

另一个测试,我已经发现直接使用它

android:background="?android:attr/selectableItemBackground"

实际上是起作用的。所以似乎在别名或选择器中使用它时才会出现问题。奇怪的是,我会认为背景和相同的参数都是一样的

编辑3

看起来我指向的主题属性实际上是一个选择器,这肯定对问题没有帮助!我想我应该在看到它的名称时就会猜到

0
0 Comments

问题原因:尝试在选择器内部引用选择器。

解决方法:修改代码,确保在引用选择器时不出现嵌套选择器。

0