2012-01-23 125 views
7

我創建了一個矩形形狀以便將其用作列表項背景。我的問題是筆畫不遵循視圖邊界,而是讓筆畫寬度的+/-爲+/-。Android:在形狀中描邊創建描邊寬度的邊距

這裏是我的外形的XML:

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

而這就是我的風格的XML:

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

而且finaly我的列表項視圖的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> 

回答

3

使用純色解決問題!

+2

你能粘貼一個示例代碼嗎? – developer82

+0

只需使用純色,只使用6(而不是8)數字來定義您的顏色。 – Anthony

3

我有同樣的問題,解決了這個問題是這樣的:

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

它給出了兩個可繪有兩個招。第一個可繪製的行程具有寬度(寬度+期望行程的餘量)。第二個drawable只有可見的行程,具有所需邊距的寬度。

2

您可以使用填充透明,而不是保證金

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

只需將您的shape<layer-list><item>和評估<item>topbottomleftright屬性。如下圖所示:

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

此外,如果你需要padding(不margin),見Ahmad Aghazadeh answer