2013-03-20 25 views
30

Chcę utworzyć układ z zaokrąglonymi narożnikami i wypełnionym tłem kolorowym.Dodawanie koloru tła i promienia obramowania do układu

To mój układ:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="210dp" 
    android:orientation="vertical" 
    android:layout_marginBottom="10dp"   
    android:background="@drawable/offerItemLayout"> 
    <LinearLayout 
     android:id="@+id/offerImageHolder" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 
      . 
      . 
      . 
    </LinearLayout> 
</LinearLayout> 

Mam następujący rozciągliwej xml (offerItemLayout), który tworzy granice poprawnie:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle"> 
      <corners 
       android:radius="5dp"/> 
      <stroke 
       android:width="1dp" 
       android:color="@color/bggrey" />    
     </shape> 
    </item> 
    // The lines below causes an inflation failure. 
    <item> 
     <fill 
      android:color="@color/white"/> 
    </item> 
</layer-list> 

Ale wkładając element z wypełnieniem powoduje inflację układu, aby zawieść.

Dodatkowo, jeśli przypiszę kolorowe tło do mojej wewnętrznej linii LinearLayout (offerImageHolder), zastępuje ono pierwsze tło zaokrąglonymi rogami.

Czy masz jakieś przemyślenia na ten temat? :/

Odpowiedz

69

Nie potrzebujesz osobnego elementu do wypełnienia. W rzeczywistości jest nieważny. Trzeba tylko dodać blok solid do shape. Późniejsza stroke rysuje na górze solid:

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <corners android:radius="5dp" /> 
    <solid android:color="@android:color/white" /> 
    <stroke 
     android:width="1dip" 
     android:color="@color/bggrey" /> 
</shape> 

też nie potrzebują layer-list jeśli masz tylko jedną shape.

+1

Co zrobić, jeśli granica, którą chcę, jest tylko na dole? – Si8

+0

@ SiKni8 do zrobienia, ale to inne pytanie i naprawdę nie mogę tego opublikować tutaj. jeśli zadasz nowe pytanie i ostrzeżesz mnie o tym, opublikuję odpowiedź. –

+0

Chciałbym dodać górną krawędź koloru karty ... – Si8

11

background.xml w folderze do rysowania.

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#FFFFFF"/>  
<stroke android:width="3dp" 
     android:color="#0FECFF" /> 
<gradient       //specify graident 
    android:startColor="#ffffffff" 
    android:endColor="#110000FF" 
    android:angle="90"/> 

<padding android:left="5dp" 
     android:top="5dp" 
     android:right="5dp" 
     android:bottom="5dp"/> 
<corners android:bottomRightRadius="7dp" 
     android:bottomLeftRadius="7dp" 
     android:topLeftRadius="7dp" 
     android:topRightRadius="7dp"/> 
</shape> 

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="210dp" 
android:orientation="vertical" 
android:layout_marginBottom="10dp"   
android:background="@drawable/background"> 
Powiązane problemy