Ich hatte diese Zeichenmöglichkeit, um ein abgerundetes Rechteck als Hintergrund zu haben:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="@color/white" />
<stroke Android:width="1dp" Android:color="@color/light_gray" />
<padding Android:left="10dp" Android:top="10dp" Android:right="10dp" Android:bottom="10dp" />
<corners Android:radius="6dp" />
</shape>
Dies funktioniert wie erwartet einwandfrei.
Jetzt möchte ich das so ändern, dass es nur die oberen Ecken abrundet, also ändere ich es so:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="@color/white" />
<stroke Android:width="1dp" Android:color="@color/light_gray" />
<padding Android:left="10dp" Android:top="10dp" Android:right="10dp" Android:bottom="10dp" />
<corners Android:topLeftRadius="6dp" Android:topRightRadius="6dp"
Android:bottomLeftRadius="0dp" Android:bottomRightRadius="0dp"/>
</shape>
Aber jetzt ist keine der Ecken abgerundet und ich bekomme ein einfaches Rechteck. Was vermisse ich hier?
Versuchen Sie, diese Werte anzugeben:
<corners Android:topLeftRadius="6dp" Android:topRightRadius="6dp"
Android:bottomLeftRadius="0.1dp" Android:bottomRightRadius="0.1dp"/>
Beachten Sie, dass ich 0dp
In 0.1dp
Geändert habe.
BEARBEITEN: Siehe Aleks G Kommentar unten für eine sauberere Version
Versuche so etwas zu machen:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:bottom="-20dp" Android:left="-20dp">
<shape Android:shape="rectangle">
<solid Android:color="@color/white" />
<corners Android:radius="20dp" />
</shape>
</item>
</layer-list>
Es scheint nicht geeignet zu sein, einen anderen Eckenradius des Rechtecks einzustellen. Also kannst du diesen Hack benutzen.
In meinem Fall unter Code
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:top="10dp" Android:bottom="-10dp"
>
<shape Android:shape="rectangle">
<solid Android:color="@color/maincolor" />
<corners
Android:topLeftRadius="10dp"
Android:topRightRadius="10dp"
Android:bottomLeftRadius="0dp"
Android:bottomRightRadius="0dp"
/>
</shape>
</item>
</layer-list>
Aufbauend auf Antwort von busylee können Sie auf diese Weise ein drawable
erstellen, das nur eine un abgerundete Ecke hat (in diesem Beispiel oben links) :
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="rectangle">
<solid Android:color="@color/white" />
<!-- A numeric value is specified in "radius" for demonstrative purposes only,
it should be @dimen/val_name -->
<corners Android:radius="10dp" />
</shape>
</item>
<!-- To keep the TOP-LEFT corner UNROUNDED set both OPPOSITE offsets (bottom+right): -->
<item
Android:bottom="10dp"
Android:right="10dp">
<shape Android:shape="rectangle">
<solid Android:color="@color/white" />
</shape>
</item>
</layer-list>
Bitte beachten Sie, dass das obige drawable
not in der Android Studio-Vorschau (2.0.0p7) korrekt angezeigt wird eine andere Ansicht und verwenden Sie diese als Android:background="@drawable/..."
.
Ich habe Ihren Code ausprobiert und einen Knopf mit abgerundeten Ecken bekommen. Ich gab die Farben als @ffffff
und Schlag gab ich #C0C0C0
.
versuchen
Möglicherweise müssen Sie dies lesen https://developer.Android.com/guide/topics/resources/drawable-resource.html#Shape
und unten gibt es eine Notiz.
Hinweis Jede Ecke muss (anfangs) einen Eckenradius größer als 1 haben, sonst werden keine Ecken gerundet. Wenn Sie möchten, dass bestimmte Ecken nicht abgerundet werden, verwenden Sie zur Umgehung Android: radius, um einen Standardeckenradius von mehr als 1 festzulegen. Überschreiben Sie dann jede einzelne Ecke mit den tatsächlich gewünschten Werten und geben Sie Null ("0dp") an. ) wo Sie keine abgerundeten Ecken wollen.
Erstelle roung_top_corners.xml auf drawable und kopiere den folgenden Code
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="rectangle" >
<corners
Android:topLeftRadius="22dp"
Android:topRightRadius="22dp"
Android:bottomLeftRadius="0dp"
Android:bottomRightRadius="0dp"
/>
<gradient
Android:angle="180"
Android:startColor="#1d2b32"
Android:centerColor="#465059"
Android:endColor="#687079"
Android:type="linear" />
<padding
Android:left="0dp"
Android:top="0dp"
Android:right="0dp"
Android:bottom="0dp"
/>
<size
Android:width="270dp"
Android:height="60dp"
/></shape>