2012-04-16 40 views
5

Tôi cần tạo hình dạng xml có thể vẽ được để vẽ hình chữ nhật không có dòng trên cùng ("hình thức u"). Những gì tôi có thể làm là vẽ một hình chữ nhật, như vậy:Hình dạng xml Android có thể vẽ được - cách vẽ hình dạng u?

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 

<solid android:color="@color/detailrow_bg_normal" /> 

<corners 
    android:bottomLeftRadius="0dp" 
    android:bottomRightRadius="0dp" 
    android:radius="1dp" 
    android:topLeftRadius="10dp" 
    android:topRightRadius="10dp" /> 

<padding 
    android:bottom="2dip" 
    android:left="1.5dip" 
    android:right="1.5dip" 
    android:top="8dip" /> 

<stroke 
    android:width="1dip" 
    android:color="@color/detailtable_border" /> 

Nhưng làm thế nào - nếu có thể, tôi có thể xác định hình dạng tương tự mà không có (hoặc dưới) dòng trên cùng?

Trả lời

10

Bạn có thể thử sử dụng danh sách lớp. Xem có cái gì như thế này sẽ làm việc:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/detailtable_border" /> 
     </shape> 
    </item> 

    <item android:left="1.5dp" android:right="1.5dp" android:bottom="2dp"> 
     <shape android:shape="rectangle"> 
     <solid android:color="@color/detailrow_bg_normal" /> 
     </shape> 
    </item> 
</layer-list> 

này (nên) điền vào hình chữ nhật với màu biên giới, sau đó che phủ nó với màu nền mặc định, để lại số tiền thích hợp của quyền/trái/biên giới phía dưới màu hiển thị .

+2

Tuyệt vời: đã làm mù đó :). Vui mừng khi biết điều đó đã giúp ích. – Femi

0

Bạn có thể đạt được điều này bằng cách sử dụng hai hình dạng và LayerList, nhưng tôi nghĩ đó là giải pháp tốt hơn và dễ sử dụng hơn NinePatch có thể rút.

+0

Nghĩ về điều đó nhưng nó sẽ yêu cầu những thay đổi đáng kể đối với giải pháp đã được triển khai, tôi thực sự thích hình dạng xml). – Bachi

2

thử mã này và cũng tham khảo này link :::

tôi đã đạt được một giải pháp tốt với một này:

<?xml version="1.0" encoding="utf-8"?> 

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- This is the line --> 
    <item android:top="-1dp" android:right="-1dp" android:left="-1dp"> 
     <shape> 
      <solid android:color="@android:color/transparent" /> 
      <stroke android:width="1dp" android:color="#ffffff" /> 
     </shape> 
    </item> 

</layer-list> 

này hoạt động tốt trong trường hợp bạn cần một màu trong suốt nhưng vẫn một cơn đột quỵ mở màu sắc (Trong trường hợp của tôi, tôi chỉ cần một dòng dưới cùng). Nếu bạn cần một màu nền, bạn có thể thêm một màu hình dạng rắn như trong câu trả lời ở trên.

+0

thử nó phải làm việc –

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