Quadratische layout-border mit Runden Innenkanten
Ich versuche ein layout erstellen Grenze mit Ecken, die quadratisch sind auf der Außenseite und die Runde auf der Innenseite. Ich gesammelt habe, die ich brauche, zu erstellen .xml-drawable-definition setzt sich aus zwei Formen: eine mit einem Strich Breite und Eckradius und die anderen mit einer Strichbreite nur:
Die 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>
Jede dieser arbeiten eigenständig als eine Grenze, wenn appliedby sich etwa so:
android:background="@drawable/round_border"
aber, wenn Sie entweder von einem oder beiden Hinzugefügt werden, um eine item-Liste drawable etwa so:
composite_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>
und:
android:background="@drawable/composite_border"
Den layout-hintergrund ist komplett schwarz, statt nur ein schwarzen Rand.
Weiß jemand, wie man die layer-Liste arbeiten für diese Aufgabe?
- vielen Dank für das teilen dieses!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom Shape Drawable Doc Sie können sehen, dass die Form nicht haben, können layer-Liste drinnen, so sollten Sie definieren Ihre composite_border.xml wie diese
beachten Sie, dass ich verändert die Reihenfolge der Elemente innerhalb der layer-Liste wie bereits in der Dokumentation der layer-Liste
Each drawable in the list is drawn in the order of the list—the last drawable in the list is drawn on top
und Sie wollen, dass es kariert, von außen
Erstellen Sie eine xml-Datei wie round_background.xml:
In der layout-set als hintergrund
square_border.xml
composite_border.xml
aufpassen, die Kommentare und die Anführungszeichen! =]
Versuchen, diese funktioniert gut genug:
solid
ist Hintergrundfarbestroke
ist Grenze