0

Я играю с новыми векторными xml-чертежами на более старых платформах, таких как Kitkat или Gingerbread. У меня есть изображение:XmlResourceParser возвращает различное количество атрибутов на Lollipop

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

Точные значения не имеют значения, что отлично работает на Lollipop. Однако я теперь пробую прочитать этот 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 и пряник:

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

Возможно ли, что это ошибка системы сборки? Я не понимаю, как возможны разные выходы. Я использую AS 1.0.2 с buildToolsVersion 21.1.2

+0

Что такое TargetSdkVersion? – pskink

+0

21 еще я не запустил этот код на Lollipop ;-) – rekire

+0

Хм, странно, кстати, ты видел телевизор/MrVector? – pskink

ответ

Смежные вопросы