我在 drawable
文件夹中的 xml 中有这段代码:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item>
<shape android:shape="rectangle">
<size android:width="90dp" android:height="90dp" />
<solid android:color="#9933CC" />
</shape>
</item>
<item>
<bitmap android:gravity="center" android:src="@drawable/main_achievements_synthesis" />
</item>
</layer-list>
</item>
<item>
<layer-list>
<item>
<shape android:shape="rectangle">
<size android:width="90dp" android:height="90dp" />
<solid android:color="#AA66CC" />
</shape>
</item>
<item>
<bitmap android:gravity="center" android:src="@drawable/main_achievements_synthesis" />
</item>
</layer-list>
</item>
</selector>
我用它来制作具有两种状态的图像(用作按钮)。在模拟器和设备上一切都按预期工作。
我知道我可以创建不同的可绘制 xml 并进行引用以实现相同的结果。
我刚切换到 Android Studio,它显示了这条消息:Element XXX is not allowed here
。它警告我有关层列表及其中的所有标签。然而,正如我所说,这段代码工作得很好。
我应该将我的代码转换为单独的 XML(知道我只会使用它们一次)还是 Android Studio 的 Inspector 代码中的“错误”?
注意:我认为我的代码可以优化,但我还没有想出如何优化。
最佳答案
这是 Android Studio 的 linting 工具中的一个错误。请在 https://code.google.com/p/android/issues/list 提交错误.
此外,您可以使用以下方法进行一些优化:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<selector>
<item android:state_pressed="true">
<shape android:shape="rectangle">
<size android:width="90dp" android:height="90dp" />
<solid android:color="#9933CC" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<size android:width="90dp" android:height="90dp" />
<solid android:color="#AA66CC" />
</shape>
</item>
</selector>
</item>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/main_achievements_synthesis" />
</item>
</layer-list>
关于android - 同一 xml 中的选择器、图层列表和形状/位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24717352/