Android XmlResourceParser返回棒棒糖上不同的属性计数

Android XmlResourceParser返回棒棒糖上不同的属性计数,android,android-5.0-lollipop,android-4.4-kitkat,android-vectordrawable,xmlresourceparser,Android,Android 5.0 Lollipop,Android 4.4 Kitkat,Android Vectordrawable,Xmlresourceparser,我正在Kitkat或Gingerbread等旧平台上使用新的矢量xml绘图工具。我有这样一个形象: <?xml version="1.0" encoding="utf-8"?> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="300dp" android:height="300dp" android:viewport

我正在Kitkat或Gingerbread等旧平台上使用新的矢量xml绘图工具。我有这样一个形象:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="300dp"
        android:height="300dp"
        android:viewportWidth="300"
        android:viewportHeight="300">
    <group>
        <path
            android:fillColor="@color/primary"
            android:pathData="@string/svg_path_background" />
        <path
            android:fillColor="#fff"
            android:pathData="@string/svg_path1" />
        <path
            android:fillColor="@color/primary"
            android:pathData="@string/svg_path2" />
    </group>
</vector>
准确的数值并不重要,这对棒棒糖很有效。但是,我现在尝试从drawable目录中读取这个xml文件。这很好,只是在每个标记中缺少一个属性。我不知道为什么会发生这种情况:

public static void load(Resources res, int drawable) {
    XmlResourceParser vector = res.getXml(drawable);
    int type = -1;
    StringBuilder xml = new StringBuilder();
    while(type != XmlResourceParser.END_DOCUMENT) {
        try {
            type = vector.getEventType();
            switch(type) {
            case XmlResourceParser.START_TAG:
                xml.append("<");
                xml.append(vector.getName());
                for(int i = 0; i < vector.getAttributeCount(); i++) {
                    xml.append(" ");
                    xml.append(vector.getAttributeName(i));
                    xml.append("=\"");
                    xml.append(vector.getAttributeValue(i));
                    xml.append("\"");
                }
                xml.append(">\n");
                break;
            case XmlResourceParser.END_TAG:
                xml.append("</");
                xml.append(vector.getName());
                xml.append(">\n");
                break;
            }
            vector.next();
        } catch(XmlPullParserException | IOException e) {
            e.printStackTrace();
        }
    }
    Log.d("XML-Test", xml.toString());
    vector.close();
}
上述代码的输出如下所示:Kitkat和Gingerbread:

<vector height="300.0dip" width="300.0dip" viewportHeight="300.0">
<group>
<path pathData="@2131624234">
</path>
<path pathData="@2131624248">
</path>
<path pathData="@2131624249">
</path>
</group>
</vector>
棒棒糖的正确输出:

<vector height="300.0dip" width="300.0dip" viewportWidth="300.0" viewportHeight="300.0">
<group>
<path fillColor="@2131296323" pathData="@2131624234">
</path>
<path fillColor="#ffffffff" pathData="@2131624248">
</path>
<path fillColor="@2131296323" pathData="@2131624249">
</path>
</group>
</vector>

这可能是构建系统的一个bug吗?我不明白不同的输出是如何可能的。我将AS 1.0.2与BuildToolsVersion21.1.2一起使用这似乎也是Android构建工具检查的一个缺陷。

什么是targetSdkVersion?21否则我不能在棒棒糖上运行该代码-嗯,奇怪,顺便说一句,你有没有看到telly/MrVector?向谷歌叔叔要telly/MrVectorA很酷,我还没有找到那个库,这几乎就是我想要实现的。然而,我想知道为什么我不能阅读这些属性。