2012-04-16 86 views
5

我需要創建一個xml形狀drawable,繪製一個沒有頂線的矩形(「u形式」)。我所能夠做的就是繪製一個矩形,像這樣:Android xml形狀drawable - 如何繪製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" /> 

但如何 - 如果可能的話,我可以定義相同的形狀沒有頂部(或底部)行?

回答

10

您可以嘗試使用圖層列表。看看像這樣的工作:

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

這(應該)填充矩形邊框的顏色,然後用默認的背景顏色覆蓋它,留下的左/右/下邊框的配色顯出適量。

+2

優秀:那是盲目的:)。很高興知道它有幫助。 – Femi 2012-04-20 06:40:44

0

您可以使用兩種形狀和LayerList來實現這一點,但我認爲這是一個更好的解決方案,並且易於使用NinePatch -drawable。

+0

想到了這一點,但它需要對已經實施的解決方案進行相當大的改變,我真的更喜歡xml形狀的方式)。 – Bachi 2012-04-16 17:35:27

2

試試這個代碼,同時也參照此link :::

我實現了這一個很好的解決方案:

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

這種運作良好的情況下,你需要一個透明的顏色,但仍然是一個開放的行程顏色(在我的情況下,我只需要一個底線)。如果你需要背景顏色,你可以添加一個固體形狀的顏色,如上面的答案。

+0

嘗試一下吧 – 2012-04-16 17:39:02