2014-07-12 11 views
8

I in einem XML innerhalb des drawable Ordner diesen Code haben:Selector, Layer-Liste und die Form/Bitmap in derselben 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> 

ich damit ein Bild mit 2 Zuständen haben (wie ein verwenden Taste). Alles funktioniert wie erwartet auf Emulator und Geräten.

Ich weiß, dass ich verschiedene ziehbare XML erstellen kann und eine Referenz erstellen, um das gleiche Ergebnis zu erzielen.

Ich wechselte gerade zu Android Studio und es zeigt mir diese Nachricht: Element XXX is not allowed here. Es warnt mich vor der Layer-Liste und allen darin enthaltenen Tags. Wie gesagt, dieser Code funktioniert jedoch gut.

Sollte ich meinen Code in separate XMLs umwandeln (wissend, dass ich sie nur einmal verwenden werde) oder ist ein "Fehler" im Inspector Code des Android Studios?

HINWEIS: Ich denke, dass mein Code optimiert werden kann, aber ich habe noch nicht herausgefunden, wie.

Antwort

15

Dies ist ein Fehler im Linting-Tool von Android Studio. Bitte melden Sie einen Fehler unter https://code.google.com/p/android/issues/list.

Sie können aber auch ein wenig optimieren, indem Sie:

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

ich kein neues Problem geschaffen hat. Ich denke, ich fand eine ähnliche Beschreibung https://code.google.com/p/android/issues/detail?id=73194 – gian1200