Ответ 1
Проблема решена с использованием сплошных цветов!
Я создал прямоугольную форму, чтобы использовать ее в качестве фона элемента списка. Моя проблема заключается в том, что штрих не следует за границей вида, но допускает границу +/- ширину штриха.
Вот xml моей формы:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadiusRatio="1"
android:shape="rectangle" >
<solid android:color="@color/deminoir" />
<stroke
android:width="4dp"
android:color="@color/deminoir" />
<padding
android:bottom="4dp"
android:left="4dp"
android:right="4dp"
android:top="4dp" />
</shape>
И вот xml моего стиля:
<style name="champ">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:orientation">vertical</item>
<item name="android:background">@drawable/bordurechamp</item>
</style>
И завершите xml моего представления элемента списка:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/champ" >
<!-- titre -->
<TextView
android:id="@+id/titre"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/deminoir"
android:padding="5dip"
android:text="titre"
android:textAppearance="@android:style/TextAppearance.Large" />
<!-- Contenu -->
<TextView
android:id="@+id/valeur"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="5dip"
android:text="valeur"
android:textAppearance="@android:style/TextAppearance.Medium"
/>
</LinearLayout>
Проблема решена с использованием сплошных цветов!
Окружите свою shape
тегами <item>...</item>
и установите top
, bottom
, left
и right
атрибуты <item>
со значениями полей, которые вы хотите. Затем оберните весь item
<layer-list>
. Увидеть ниже:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="{L-Margin}dp"
android:right="{R-Margin}dp"
android:bottom="{B-Margin}dp"
android:top="{T-Margin}dp">
<!-- Insert your shape here: -->
<shape android:shape="...">
...
</shape>
</item>
</layer-list>
Кроме того, если вам нужны padding
(вместо margin
), см Ahmad Агазад ответить ниже.
Вы можете использовать прозрачный отступ вместо поля
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listview_background_shape">
<stroke
android:width="8dp"
android:color="#0000000" />
<padding
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp" />
<solid
android:color="@color/white" />
</shape>
У меня была такая же проблема, и я решил это так:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:shape="rectangle">
<solid android:color="@color/background" />
<corners android:radius="2dp"/>
<stroke
android:width="4dp"
android:color="@android:color/black" />
</shape>
</item>
<item>
<shape
android:shape="rectangle">
<corners android:radius="2dp"/>
<solid android:color="@android:color/transparent" />
<stroke
android:width="2dp"
android:color="@color/background" />
</shape>
</item>
</layer-list>
Он дает две графики с двумя штрихами. Вначале выталкиваемые имеют ход с шириной (ширина + край желаемого хода). Вторые выталкиваемые имеют только видимый ход с шириной желаемого поля.