Как добавить дополнение к градиенту <shape> в Android?
У меня есть форма с градиентом, который я использую как разделитель между элементами 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>
или в отдельный дочерний <padding>
<shape>
, и он ничего не меняет.
Как добавить прописку слева и справа от моего разделителя списка?
Ответы
Ответ 1
Одно из решений, похоже, состоит в том, чтобы "обернуть" мой 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>
Это приводит к двум файлам, чтобы указать простой разделитель. Я не знаю, есть ли способ сделать это только с одним файлом.
Ответ 2
Я думаю, вы могли бы объединить его вот так:
<?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>
Ответ 3
Другое решение с использованием вставки:
<?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>