Android:笔触形状创build笔触宽度的边距

我创build了一个矩形形状为了使用它作为列表项背景。 我的问题是笔画不遵循视图边界,而是让+/-笔画宽度的边距。

这是我的形状的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> 

Solutions Collecting From Web of "Android:笔触形状创build笔触宽度的边距"

问题解决使用纯色!

我有同样的问题,并解决这个问题:

 <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。 第一个可绘制的行程的宽度(宽度+理想的行程余量)。 第二个drawable只有可见的行程,具有所需边距的宽度。

您可以使用填充透明而不是边距

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

太晚了! 但对于那些来。 不幸的是以前的答案不能正常工作。

只需将您的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的答案 。