2012-01-23 19 views
7

Liste öğesi arka planı olarak kullanmak için bir dikdörtgen şekli oluşturdum. Benim sorunum inme görüş sınırını takip etmemekte, ancak bir inme marjı +/- inme genişliğine izin vermesidir. İşte Android: bir şekildeki kontur, strok genişliğinin kenar boşluğunu oluşturur

benim şeklin xml geçerli:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:innerRadiusRatio="1" 
    android:shape="rectangle" > 
    <solid android:color="@color/deminoir" /> 
    <stroke 
     android:width="4dp" 
     android:color="@color/deminoir" /> 
    <padding 
     android:bottom="4dp" 
     android:left="4dp" 
     android:right="4dp" 
     android:top="4dp" /> 
</shape> 

Ve işte benim tarzı xml geçerli:

<style name="champ"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:orientation">vertical</item> 
    <item name="android:background">@drawable/bordurechamp</item> 
</style> 

Ve nihayet benim liste öğesi görünümünün xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@style/champ" > 


    <!-- titre --> 
    <TextView 
     android:id="@+id/titre" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/deminoir" 
     android:padding="5dip" 
     android:text="titre" 
     android:textAppearance="@android:style/TextAppearance.Large" /> 

    <!-- Contenu --> 
    <TextView 
     android:id="@+id/valeur" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:padding="5dip" 
     android:text="valeur" 
     android:textAppearance="@android:style/TextAppearance.Medium" 
     /> 

</LinearLayout> 

cevap

3

Sorun, düz renk kullanarak çözüldü!

+2

Örnek bir kod yapıştırır mısınız? – developer82

+0

Sadece renginizi tanımlamak için sadece 6 (veya 8 değil) rakamı kullanarak düz bir renk kullanın. – Anthony

3

Ben aynı sorunu vardı ve bu gibi çözülür:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape 
      android:shape="rectangle"> 
      <solid android:color="@color/background" /> 
      <corners android:radius="2dp"/> 
      <stroke 
       android:width="4dp" 
       android:color="@android:color/black" /> 
     </shape> 
    </item> 
    <item> 
     <shape 
      android:shape="rectangle"> 
      <corners android:radius="2dp"/> 
      <solid android:color="@android:color/transparent" /> 
      <stroke 
       android:width="2dp" 
       android:color="@color/background" /> 
     </shape> 
    </item> 
</layer-list> 

İki vuruş ile iki drawables verir. İlk çekilebilir, genişliği ile vuruş var (istenen vuruş genişlik + marjı). İkinci çekilebilir, sadece arzu edilen kenar boşluğu ile görünür inme var.

2

Sen

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listview_background_shape"> 
    <stroke android:width="8dp" android:color="#0000000" /> 
    <padding android:left="2dp" 
     android:top="2dp" 
     android:right="2dp" 
     android:bottom="2dp" /> 
    <solid android:color="@color/white" /> 
</shape> 
1

Basitçe senin shape bir <layer-list><item> içine yerleştirin ve <item> ait top, bottom, left ve right özelliklerini değerlendirmek yerine marjının Şeffaf dolgu kullanabilirsiniz. Aşağıdaki gibisin: padding (değil margin) gerekirse Ayrıca

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:bottom="4dp" 
     android:left="6dp" 
     android:right="8dp" 
     android:top="10dp"> 
     <shape android:shape="..."> 
      ... 
     </shape> 
    </item> 
</layer-list> 

, Ahmad Aghazadeh answer bakın.

İlgili konular