2014-07-12 15 views
8

Mam ten kod w pliku XML w folderze drawable:Selector, Layer-lista i kształtów/bitmap w tym samym 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> 

go używać, aby mieć obraz z 2 stanów (do wykorzystania jako przycisk). Wszystko działa zgodnie z oczekiwaniami na emulatorze i urządzeniach.

Wiem, że mogę utworzyć inny xml do rysowania i utworzyć odniesienie, aby osiągnąć ten sam wynik.

Właśnie przełączyłem się do Android Studio i pokazuje mi tę wiadomość: Element XXX is not allowed here. Ostrzega mnie o liście warstw i wszystkich tagach w niej zawartych. Jednak, jak już powiedziałem, ten kod działa dobrze.

Czy powinienem zamienić mój kod na oddzielne pliki XML (wiedząc, że będę ich używać tylko raz), czy też jest to "błąd" w kodzie Inspektora Android Studio?

UWAGA: Myślę, że mój kod można zoptymalizować, ale jeszcze nie wiem, jak to zrobić.

Odpowiedz

15

To jest błąd w narzędziu do wyrównywania w Android Studio. Proszę zgłosić błąd na https://code.google.com/p/android/issues/list.

Ponadto, można zoptymalizować trochę za pomocą:

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

Nie utworzyć nowy problem. Myślę, że znalazłem taki z podobnym opisem https://code.google.com/p/android/issues/detail?id=73194 – gian1200

Powiązane problemy