2012-04-16 14 views
5

Potrzebuję utworzyć rysunek kształtu xml, który rysuje prostokąt bez linii górnej ("formularz u"). Co mogę zrobić, to narysować prostokąt, tak:Szuflada w formacie Android xml - jak narysować formę 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" /> 

ale jak - jeśli to możliwe, mogę określić ten sam kształt bez górnej (lub dolnej) linii?

Odpowiedz

10

Możesz spróbować użyć listy warstw. Zobacz, czy coś takiego będzie działać:

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

to (powinien) wypełnić prostokąt z kolorem obramowania, a następnie nałożyć ją na domyślny kolor tła, pozostawiając odpowiednią ilość prawej/lewej dolnej granicy/color pokazano .

+2

Świetnie: zrobiłeś to ślepo :). Cieszę się, że pomogło. – Femi

0

Być może uda się to osiągnąć za pomocą dwóch kształtów i LayerList, ale myślę, że jest to zarówno lepsze rozwiązanie, jak i łatwiejsze w użyciu.

+0

Pomyślałem o tym, ale wymagałoby to znacznych zmian w już zaimplementowanym rozwiązaniu, wolałbym sposób kształtu xml). – Bachi

2

wypróbować ten kod, a także odnosi się to link :::

osiągnąłem dobre rozwiązanie z tym jednym:

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

to działa dobrze w przypadku trzeba przezroczystą barwę, ale wciąż otwarta skoku kolor (w moim przypadku potrzebowałem tylko dolnej linii). Jeśli potrzebujesz koloru tła, możesz dodać jednolity kolor kształtu, jak w powyższej odpowiedzi.

+0

spróbuj to musi działać –

Powiązane problemy