填充不会影响XML布局中的<形状>

我正在尝试在XML文件/布局中声明的<shape>设置填充。 但无论我设置什么,没有任何改变与填充有关。 如果我修改任何其他属性,我看到在UI上的影响。 但是它不适用于填充。 您能否就可能的原因提出build议?

这里是我想要的样式的XML形状:

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <stroke android:width="1dp" android:color="#ffffff" android:dashWidth="2dp" /> <solid android:color="@color/button_white_cover" /> <corners android:radius="11dp" /> <padding android:left="1dp" android:top="20dp" android:right="20dp" android:bottom="2dp" /> </shape> 

我终于解决了我的问题与填充。

所以在这里填充对形状没有影响。 而不是这个,你将不得不在其他可以使用它的drawable中使用填充。 所以,我有一个drawable使用的形状,在那里我做了以下:

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/shape_below"/> <item android:top="10px" android:right="10px" android:drawable="@drawable/shape_cover"/> </layer-list> 

所以,正如你可以在第二个<item> -element中看到的,我设置了填充(顶部和右侧)。 之后,一切正常。

谢谢。

正如一些评论所指出的,最好的方法是将<shape>包装在<item>元素中,并设置填充。 然而,还有其他选项可用,详情请参阅下面的链接。 例如

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:left="8dp" android:right="8dp" android:top="8dp" android:bottom="8dp"> <shape android:shape="rectangle"> ... </shape> </item> </layer-list> 

根据您的需要,而不是使用图层列表,您可以使用以下任何可绘制types:

  • 层列表
  • select
  • 级列表
  • 过渡

有关可用的可绘制types的更多信息,请参阅此android文档

资料来源:

  • DustinB的评论
  • Yahel的回答
  • user924的评论
  • 如何在Android中添加填充到渐变<shape>?

Lyobomyr的答案是有效的,但是这里应用了相同的解决scheme,但是没有创build新的drawable的开销,因此最小化了文件混乱:

如何在Android中添加填充到渐变<shape>?

我解决了这样的问题:

 <shape android:shape="oval" > <stroke android:width="4dp" android:color="@android:color/transparent" /> <solid android:color="@color/colorAccent" /> </shape> 

只是添加了一个透明的笔触。