2012-01-23 5 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> 

그리고 마침내 내 목록 항목보기의 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> 

이 두 스트로크 두 드로어 블을 제공합니다. 첫 번째 드로어 블은 폭 (원하는 폭의 마진 + 바람직한 마진)을 가진 스트로크를 갖습니다. 두 번째 드로잉 물에는 원하는 마진 너비의 가시 스트로크 만 있습니다.

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>top, bottom, leftright 속성을 평가하는 대신 마진의 투명 패딩을 사용할 수 있습니다. 아래처럼 : 당신이 padding (하지 margin)을 필요로하는 경우도

<?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를 참조하십시오.