在同一个XML文件中使用选择器、图层列表和形状/位图。

9

我在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。它警告我关于Layer-list和其中所有标签。然而,正如我所说,这段代码完全正常。

我应该将我的代码分成单独的XML文件(知道我只会使用它们一次),还是这只是Android Studio Inspector Code中的一个“错误”?

注意:我认为我的代码可以优化,但我还没有想出如何做到。

1个回答

15

这是Android Studio的代码检查工具中出现的错误。请在https://code.google.com/p/android/issues/list上提交一个bug报告。

另外,您可以通过使用以下方法进行优化:

<?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>

我没有创建一个新的问题。我认为我找到了一个描述类似的问题 https://code.google.com/p/android/issues/detail?id=73194 - gian1200

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接