如何在Android中添加填充到渐变<shape>?
我有一个渐变的形状,我用作ListView
项目之间的分隔线。 我已经定义如下:
<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#ccd0d3" android:centerColor="#b6babd" android:endColor="#ccd0d3" android:height="1px" android:angle="0" /> </shape>
我想在渐变的任一侧添加6个填充像素,以便它不会从屏幕的边缘延伸到边缘。
但是,无论我在哪里放置一个android:left="6px"
和android:right="6px"
,它似乎都不起作用。 我可以将它放在<shape>
元素, <gradient>
元素或者<shape>
一个单独的<padding>
子元素中,并且不会改变任何东西。
我怎样才能在我的列表分隔符的左侧和右侧添加填充?
我想你可以像这样结合起来:
<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:left="6dp" android:right="6dp"> <shape android:shape="rectangle"> <gradient android:startColor="#ccd0d3" android:centerColor="#b6babd" android:endColor="#ccd0d3" android:height="1px" android:angle="0"/> </shape> </item> </layer-list>
另一种使用插入的解决scheme
<?xml version="1.0" encoding="UTF-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetLeft="6dp" android:insetRight="6dp" > <shape android:shape="rectangle"> <gradient android:startColor="#ccd0d3" android:centerColor="#b6babd" android:endColor="#ccd0d3" android:height="1px" android:angle="0" /> </shape> </inset>
一个解决scheme似乎是用另一个指定适当的填充的drawable“包装”我的drawable。
例如, list_divider.xml
将是:
<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:left="6dp" android:right="6dp" android:drawable="@drawable/list_divider_inner" /> </layer-list>
然后list_divider_inner.xml
将是原始的drawable:
<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#ccd0d3" android:centerColor="#b6babd" android:endColor="#ccd0d3" android:height="1px" android:angle="0" /> </shape>
这导致两个文件指定一个简单的分隔线。 我不知道是否有办法做到只有一个文件。