Форма смещения в пределах ShapeDrawable

Я пытаюсь нарисовать округленный прямоугольник с рамкой вокруг него, используя класс, который расширяет ShapeDrawable (см. здесь), и все работает, за исключением того, чтобы отрезать часть границы, потому что сама форма не выходит за пределы этих границ.

Не существует ли какой-либо способ смещения, когда фигураруемая начинает рисовать так, чтобы между границами самой фигуры и холста была какая-то прокладка? Я попробовал оба ShapeDrawable.setBounds больше, чем собственный размер формы и ShapeDrawable.setPadding, но, похоже, никуда не денутся. Должен ли я вместо этого подклассифицировать Drawable?

Ответ 1

Вы можете обернуть форму с помощью вставки (inset_shape.xml):

    <inset xmlns:android="http://schemas.android.com/apk/res/android"
     android:drawable="@drawable/your_shape_drawable" android:insetBottom="10dip"
     android:insetLeft="10dip" android:insetRight="10dip" android:insetTop="10dip"
     android:visible="true" />

Затем просто используйте inset_shape, как вам нужно.

Ответ 2

Попробуй это в своем мобильном...!

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="#e1e1e1" />

    <stroke
        android:width="2dp"
        android:color="#808080" />

    <corners android:radius="10dp" />

    <padding
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp" />

</shape>