2010-10-30 49 views
33

Tôi hiện đang vẽ một số vòng tròn trên canvas trong chế độ xem tùy chỉnh trong mã. các vòng tròn tĩnh và không thay đổi. Tôi muốn vẽ chúng bằng cách sử dụng ShapeDrawable trong xml để giúp làm sạch mã của tôi. Tôi sẽ có một số drawables khác nhau mà người dùng có thể chọn và do đó tôi không muốn làm điều này trong mã. có 3 hoặc 4 xml drawables có vẻ rất nhiều neater với tôi.Vẽ nhiều hình dạng với ShapeDrawable trong xml với Android

Tôi đã tạo một vòng kết nối bằng xml bằng cách sử dụng ShapeDrawable nhưng không thể thêm nhiều hơn một hình dạng vào xml.

Làm cách nào để thêm nhiều hình dạng vào tài liệu xml bằng ShapeDrawable.

Trả lời

33

Tôi nghĩ rằng tôi đã tìm thấy giải pháp để thêm nhiều hình dạng vào tệp xml của tôi bằng cách sử dụng Danh sách lớp. Tôi havent đã cố gắng này được nêu ra nhưng điều này dường như t được chính xác những gì tôi muốn như các hình dạng sẽ được rút ra theo thứ tự của chỉ số mảng của họ.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape> 
     <solid android:color="#FFF8F8F8" /> 
     </shape> 
    </item> 
    <item android:top="23px"> 
     <shape> 
     <solid android:color="#FFE7E7E8" /> 
     </shape> 
    </item> 
</layer-list> 

Blog post

Android docs

63

Đây là cách tôi đã làm một vòng tròn màu đỏ đầy với một viền đen một pixel, với một số màu trắng 72 ở giữa:

Tạo một tập tin XML trong res \ drawable và đặt tên cho nó một cách thích hợp, ví dụ: red_circle_black_border.xml

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="oval"> 
      <solid android:color="@android:color/black" /> 
     </shape> 
    </item> 
    <item android:top="1dp" android:left="1dp" android:right="1dp" android:bottom="1dp"> 
     <shape android:shape="oval"> 
      <solid android:color="@android:color/red" /> 
     </shape> 
    </item> 
</layer-list> 

Sau đó, để sử dụng nó trong cách bố trí của bạn, khai báo nó như sau:

<TextView 
    android:text="72" 
    android:textSize="14dp" 
    android:textStyle="bold" 
    android:background="@drawable/red_circle_black_border" 
    android:layout_width="22dp" 
    android:layout_height="22dp" 
    android:gravity="center_vertical|center_horizontal" 
    android:textColor="@android:color/white" /> 

Rõ ràng, thay đổi textSize và layout_width/chiều cao theo yêu cầu :-)

+0

Tôi giả sử bạn có thể sử dụng một ImageView nếu bạn có không có văn bản để hiển thị? – skyfoot

+2

Chắc chắn. Nó có hiệu lực chỉ là một drawable bây giờ, do đó, sử dụng nó như một hình ảnh. –

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