shape中设置padding无效解决方案

最近在写布局的时候,给LinearLayout添加分割线,并且想让分割线有上下边距,于是就自定义一个shape

1
2
3
4
5
6
7
8
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:height="@dimen/line_height" />
<solid android:color="@color/main_line" />
<padding
android:bottom="10dp"
android:top="10dp" />
</shape>

可是事与愿违,实际效果并没有上下边距。

解决方法:

shape放在layer-listitem中,直接在item的节点下设置topbottom

1
2
3
4
5
6
7
8
9
10
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="10dp"
android:top="10dp">
<shape android:shape="rectangle">
<size android:height="@dimen/line_height" />
<solid android:color="@color/main_line" />
</shape>
</item>
</layer-list>