Квадратная граница макета с закругленными внутренними краями

Я пытаюсь создать границу макета с углами, которые будут квадратными снаружи и круглыми внутри. Я понял, что мне нужно создать определение с возможностью рисования .xml, состоящее из двух фигур: одна с шириной обводки и радиусом угла, а другая с шириной только обводки:

Drawables

round_border.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="4dp" android:color="#FF000000" />
    <padding android:left="7dp" android:top="7dp"
            android:right="7dp" android:bottom="7dp" />
    <corners android:radius="4dp" />
    <solid android:color="#FFC0C0C0" />
</shape> 

square_border .xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="2dp" android:color="#FF000000" />
    <solid android:color="#FFC0C0C0" />
</shape> 

Каждый из них работает независимо как граница, когда применяется сам по себе следующим образом:

android:background="@drawable/round_border" 

, но когда они оба или они добавляются в список элементов, можно рисовать следующим образом:

композитный_бордер.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <layer-list>
        <item android:drawable="@drawable/round_border"/>
        <!-- <item android:drawable="@drawable/square_border"/> -->
    </layer-list>
</shape> 

и:

android:background="@drawable/composite_border"

Фон макета полностью черный, а не только черная рамка.

Кто-нибудь знает, как заставить список слоев работать для этой задачи?

9
задан David 11 April 2019 в 06:29
поделиться