2016-03-17 10 views
7

Ich versuche, anpassbare Symbole in Android zu machen. Ich habe das Vektorelement erstellt, aber jetzt möchte ich ihm einen runden Hintergrund geben, also habe ich versucht, es in eine runde Form zu bringen. Wie folgt aus:Wie setze ich eine <vector> in eine <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> 

Doch funktioniert das nicht, und ich versuche, die folgendes zu erreichen:
enter image description here

Durch die Verwendung von nur den Vektor ich den Hintergrund nicht bekommen.
(verwendete ich this website den Vektor zu erzeugen)

+0

@Bob Malooga, Ok aber 'vector' innerhalb einer' layer-list' funktioniert auch nicht, also schätze ich, dass ich das Symbol als png exportieren werde und eine 'layer-list' mache, die untere' shape' wäre ein Kreis und die oberste eine leere ' form 'mit Hintergrund mein png richtig? – Edward

+0

Ich weiß nicht, ich könnte falsch liegen, ich dachte, es könnte aus dem gleichen Grund sein, dass ein Vektor nicht in einer Form sein kann – Edward

+0

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

Antwort

23

Anstatt setzen einen Vektor in eine Form, ich LayerList Drawable

Etwas wie so verwenden würde:

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

funktioniert nicht auf Pre- Lollipop-Geräte –

+0

Genau das tun, aber App: srcCompat als die Support-Bibliothek schlagen Ergebnisse in einem Absturz vor. –

+0

Es scheint, dass es ein [Workaround] (https://stackoverflow.com/a/40250753/2649012) gibt. –

Verwandte Themen