2013-03-20 12 views
30

Ich möchte ein Layout mit abgerundeten Ecken und einem gefüllten farbigen Hintergrund erstellen.Hinzufügen eines farbigen Hintergrunds und eines Rahmenradius zu einem Layout

Das ist mein Layout:

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

ich folgende ziehbar xml haben (offerItemLayout), das schafft die Grenzen richtig:

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

Aber das Element mit einer Füllung Einsetzen bewirkt, dass die Inflation des Layouts fehlschlagen.

Außerdem, wenn ich meinem inneren LinearLayout (offerImageHolder) einen farbigen Hintergrund zuweisen, überschreibt es den ersten Hintergrund mit meinen abgerundeten Ecken.

Haben Sie irgendwelche Gedanken, dies richtig zu tun? :/

Antwort

69

Sie brauchen das separate Füllelement nicht. In der Tat ist es ungültig. Sie müssen nur einen solid Block zu shape hinzufügen. Die anschließende stroke zieht auf dem 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> 

Sie brauchen auch nicht die layer-list wenn Sie nur eine shape haben.

+1

Was ist, wenn die Grenze, die ich will, nur nur unten ist? – Si8

+0

@ SiKni8 machbar, aber es ist eine andere Frage, und ich kann es nicht wirklich hier posten. Wenn du eine neue Frage stellst und mich darauf aufmerksam machst, werde ich eine Antwort posten. –

+0

Ich möchte eine Farbe Grenze oben auf der Karte hinzufügen ... – Si8

11

background.xml im Zeichenordner.

<?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"> 
Verwandte Themen