2012-01-23 29 views
7

Tôi đã tạo một hình chữ nhật để sử dụng nó làm nền danh sách mục. Vấn đề của tôi là đột quỵ không theo đường viền của khung nhìn nhưng hãy để lề của +/- chiều rộng nét.Android: đột quỵ trong một hình dạng tạo ra một lề của chiều rộng đột quỵ

Đây là xml hình dạng của tôi:

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

Và đây là xml của phong cách của tôi:

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

và cuối cùng xml của xem danh sách mục của tôi:

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

Trả lời

3

Sự cố được giải quyết bằng màu sắc bền!

+2

bạn có thể dán mã mẫu không? – developer82

+0

Chỉ sử dụng màu đồng nhất, chỉ sử dụng 6 (và không 8) chữ số để xác định màu của bạn. – Anthony

3

tôi đã cùng một vấn đề và giải quyết nó như thế này:

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

Nó cung cấp cho hai drawables với hai đột quỵ. Đầu tiên drawable có đột quỵ với chiều rộng (width + margin của đột quỵ mong muốn). Thứ hai drawable chỉ có thể nhìn thấy đột quỵ với chiều rộng của margin mong muốn.

2

Bạn có thể sử dụng phần đệm trong suốt thay vì lề

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

Đơn giản chỉ cần chèn của bạn shape thành một <layer-list><item> và đánh giá top, bottom, leftright thuộc tính của <item>. Như dưới đây:

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

Ngoài ra nếu bạn cần padding (không margin), xem Ahmad Aghazadeh answer.

Các vấn đề liên quan