同一xml中的选择器、图层列表和形状/位图

Posted

技术标签:

【中文标题】同一xml中的选择器、图层列表和形状/位图【英文标题】:Selector, Layer-list and shape/bitmap in the same xml 【发布时间】:2014-09-03 05:41:43 【问题描述】:

我在 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: android: />

                <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: android: />

                    <solid android:color="#AA66CC" />
                </shape>
            </item>
            <item>
                <bitmap android:gravity="center" android:src="@drawable/main_achievements_synthesis" />
            </item>
        </layer-list>
    </item>

</selector>

我用它来制作具有 2 种状态的图像(用作按钮)。在模拟器和设备上一切正常。

我知道我可以创建不同的可绘制 xml 并进行引用以达到相同的结果。

我刚刚切换到 Android Studio,它向我显示了这条消息:Element XXX is not allowed here。它会警告我有关 Layer-list 和其中的所有标签。但是,正如我所说,这段代码运行良好。

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

注意:我认为我的代码可以优化,但我还没有弄清楚如何。

【问题讨论】:

【参考方案1】:

这是 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: android: />
                    <solid android:color="#9933CC" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <size android: android: />
                    <solid android:color="#AA66CC" />
                </shape>
            </item>
        </selector>
    </item>
    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/main_achievements_synthesis" />
    </item>
</layer-list>

【讨论】:

我没有创建新问题。我想我找到了一个描述相似的code.google.com/p/android/issues/detail?id=73194

以上是关于同一xml中的选择器、图层列表和形状/位图的主要内容,如果未能解决你的问题,请参考以下文章

Android 使用图层列表作为按钮选择器

选择位掩码中与选择器位图中的 1 位重叠的设置位范围

使用选择器作为颜色的形状不起作用

按钮在选择器中不会改变其形状

在 SharePoint2010 中使用 XML 查看器取得其他站点的内容列表

《ArcGIS Engine+C#实例开发教程》第七讲 图层符号选择器的实现