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

标签 android android-studio lint xml-drawable

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

相关文章:

android:screenOrientation=”locked” 在旧操作系统版本上

android - 从另一个 Activity 中打开一个 Activity 的 fragment

android - 如何在 Android Studio 上找到日志?

android - 如何使用 -Xlint :deprecation 重新编译

android - 如何使用 Android LintFix 添加导入

Android:在 Opengl 应用程序中播放视频的最佳方式

java - 绘制位图最快的方法

Android Studio 渲染问题

java - Catch Try 让我在 Android Studio 调试中感到困惑

amazon-web-services - 嵌套 Cloudformation 堆栈中的 CFN-Lint 错误