Intereting Posts

Как добавить дополнение к градиенту <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> , и он ничего не меняет.

Как добавить прописку слева и справа от моего разделителя списка?

Solutions Collecting From Web of "Как добавить дополнение к градиенту <shape> в Android?"

Я думаю, вы могли бы объединить его так:

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

Другое решение с использованием вставки:

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

Одно из решений, похоже, состоит в том, чтобы «обернуть» мой 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 будет оригинальным:

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

Это приводит к двум файлам, чтобы указать простой разделитель. Я не знаю, есть ли способ сделать это только с одним файлом.