2016-03-17 39 views
7

Próbuję tworzyć konfigurowalne ikony w systemie Android. Zrobiłem element wektorowy, ale teraz chcę nadać mu zaokrąglone tło, więc starałem się umieścić go w zaokrąglonym kształcie. Tak:Jak umieścić <vector> w urządzeniu <shape> w systemie Android?

<?xml version="1.0" encoding="utf-8"?> 
<!-- drawable/circle_card_icon.xml --> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
    <vector xmlns:android="http://schemas.android.com/apk/res/android" 
     android:height="24dp" 
     android:width="24dp" 
     android:viewportWidth="24" 
     android:viewportHeight="24"> 
     <path android:fillColor="#000" 
      android:pathData="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M6,9H18V11H6M14,14H6V12H14M18,8H6V6H18" /> 
    </vector> 
</shape> 

Jednak to nie działa, a ja staram się osiągnąć następujące:
enter image description here

Używając jedynie wektor nie dostanę tła.
(I stosuje this website celu wytworzenia wektora)

+0

@Bob Malooga Ok ale 'wektor' wewnątrz' listy-warstw' też nie działa, więc domyślam się, że wyeksportuję ikonę jako png, i zrobię "listę warstw", dolny "kształt" będzie kołem, a górny pustym ' kształtować "z tłem mój png w prawo? – Edward

+0

Nie wiem, mógłbym się mylić, myślałem, że to z tego samego powodu, że wektor nie może być w formie – Edward

+0

@ Bob Malooga, https://goo.gl/2hkDDD – Edward

Odpowiedz

23

Zamiast wprowadzenie wektora do kształtu będzie używać LayerList rozciągliwej

coś tak:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <!-- drawable/circle_card_icon.xml --> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="oval"> 
      <solid android:color="#8df"/> 
      <size 
       android:width="48dp" 
       android:height="48dp" 
      /> 
     </shape> 
    </item> 
    <item android:drawable="@drawable/your_vector_drawable" /> 
</layer-list> 
+0

Nie działa na Urządzenia Lollipop –

+0

Wykonanie tej czynności, ale wykonanie aplikacji: srcCompat jako biblioteka pomocnicza sugeruje awarię. –

+0

Wygląda na to, że istnieje [obejście] (https://stackoverflow.com/a/40250753/2649012). –