2014-07-12 17 views
8

ho questo codice in un XML all'interno della cartella drawable:Selettore, Layer-list e forma/bitmap nella stessa 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> 

lo uso per avere un'immagine con 2 stati (da usare come pulsante). Tutto funziona come previsto su emulatore e dispositivi.

So che posso creare diversi xml disegnabili e fare un riferimento per ottenere lo stesso risultato.

Ho appena passato ad Android Studio e mi mostra questo messaggio: Element XXX is not allowed here. Mi mette in guardia sulla lista dei livelli e su tutti i tag al suo interno. Tuttavia, come ho detto, questo codice funziona bene.

Devo passare il mio codice a XML separati (sapendo che li userò solo una volta) o è un "errore" nel codice Inspector di Android Studio?

NOTA: Penso che il mio codice possa essere ottimizzato, ma non ho ancora capito come.

risposta

15

Questo è un errore nello strumento di linting di Android Studio. Si prega di inviare un bug a https://code.google.com/p/android/issues/list.

Inoltre, è possibile ottimizzare un po 'utilizzando:

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

non ho creato un nuovo problema. Penso di averne trovato uno con una descrizione simile https://code.google.com/p/android/issues/detail?id=73194 – gian1200

Problemi correlati