2016-03-17 13 views
7

Sto cercando di rendere le icone personalizzabili in Android. Ho creato l'elemento vettoriale, ma ora voglio dargli uno sfondo arrotondato, così ho provato a posizionarlo con una forma arrotondata. Come questo:Come mettere un <vector> in un <shape> in 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> 

Eppure questo non funziona, e sto cercando di raggiungere i seguenti obiettivi:
enter image description here

Utilizzando solo il vettore non ottengo lo sfondo.
(ho usato this website per generare il vettore)

+0

@Bob Malooga, Ok ma 'vector' all'interno di' 'layer-list' non funzionerà, quindi suppongo che esporterò l'icona come png, e creerò un' layer list ', in basso 'shape' sarebbe un cerchio e il primo uno vuoto' shape' with background my png giusto? – Edward

+0

Non so, potrei sbagliarmi, ho pensato che potrebbe essere per lo stesso motivo per cui un vettore non può essere in una forma – Edward

+0

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

risposta

23

Piuttosto che mettere un vettore in una forma, userei una lista dei livelli Drawable

Qualcosa in questo modo:

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

Non funziona su pre- Dispositivi Lollipop –

+0

Eseguendo questa operazione esatta, ma facendo app: srcCompat poiché la libreria di supporto suggerisce risultati in un arresto anomalo. –

+0

Sembra che ci sia un [soluzione alternativa] (https://stackoverflow.com/a/40250753/2649012). –

Problemi correlati