2016-03-17 16 views
7

Tôi đang cố tạo các biểu tượng tùy chỉnh trong Android. Tôi đã tạo thành phần tử vector, nhưng bây giờ tôi muốn cho nó một nền tròn, vì vậy tôi đã cố gắng đặt nó trong một hình tròn. Như thế này:Làm thế nào để đặt một <vector> trong một <shape> trong 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> 

Tuy nhiên, điều này không làm việc, và tôi đang cố gắng để đạt được những điều sau đây:
enter image description here

Bằng cách sử dụng chỉ vector Tôi không nhận được nền.
(tôi đã sử dụng this website để tạo ra vector)

+0

@ Bob Malooga, Ok nhưng 'vector' bên trong một' layer-list' sẽ không hoạt động, vì vậy tôi đoán tôi sẽ xuất biểu tượng là png, và tạo một 'layer-list', bottom' shape' sẽ là một hình tròn và trên cùng là rỗng hình dạng' với nền png của tôi phải không? – Edward

+0

Tôi không biết, tôi có thể sai, tôi nghĩ rằng nó có thể là vì lý do tương tự một vector không thể có trong một hình dạng – Edward

+0

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

Trả lời

23

Thay vì đặt một vector thành hình, tôi muốn sử dụng một LayerList drawable

Something như vậy:

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

Không hoạt động trên tiền tố Các thiết bị Lollipop –

+0

Làm điều này chính xác, nhưng làm ứng dụng: srcCompat như thư viện hỗ trợ cho thấy kết quả trong một vụ tai nạn. –

+0

Dường như có [cách giải quyết] (https://stackoverflow.com/a/40250753/2649012). –

Các vấn đề liên quan