it-swarm.com.de

Wie stelle ich den Radius der abgerundeten Ecken einer Farbe ein, die mit XML gezeichnet werden kann?

Auf der Android Website gibt es einen Abschnitt über Farbzeichnungen . Das Definieren dieser Zeichnungen in XML sieht folgendermaßen aus:

<resources>
    <drawable name="solid_red">#f00</drawable>
    <drawable name="solid_blue">#0000ff</drawable>
    <drawable name="solid_green">#f0f0</drawable>
</resources>

In der Java api haben sie die folgende Methode, um abgerundete Ecken zu definieren:

setCornerRadius(float radius)

Gibt es eine Möglichkeit, die abgerundeten Ecken in der XML-Datei festzulegen?

99
Jay Askren

Verwenden Sie die <shape> -Tag zum Erstellen einer in XML darstellbaren Datei mit abgerundeten Ecken. (Mit dem Shape-Tag können Sie auch andere Aufgaben ausführen, z. B. einen Farbverlauf definieren.).

Hier ist eine Kopie einer XML-Datei, die ich in einer meiner Apps verwende, um eine Grafik mit weißem Hintergrund, schwarzem Rand und abgerundeten Ecken zu erstellen:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"> 
    <solid Android:color="#ffffffff"/>    

    <stroke Android:width="3dp"
            Android:color="#ff000000" />

    <padding Android:left="1dp"
             Android:top="1dp"
             Android:right="1dp"
             Android:bottom="1dp" /> 

    <corners Android:bottomRightRadius="7dp"
             Android:bottomLeftRadius="7dp"
             Android:topLeftRadius="7dp"
             Android:topRightRadius="7dp" /> 
</shape>
285
Mark B

die Antwort von mbaird funktioniert gut. Beachten Sie jedoch, dass es einen Fehler in Android (2.1) zu geben scheint. Wenn Sie den Radius einer einzelnen Ecke auf 0 setzen, werden alle Ecken auf 0 gesetzt (zumindest ist das der Fall) Fall mit "dp" -Einheiten; ich habe es mit keiner anderen Einheit ausprobiert).

Ich brauchte eine Form, bei der die oberen Ecken abgerundet und die unteren Ecken quadratisch waren. Ich habe dies erreicht, indem ich die Ecken, die ich quadratisch haben wollte, auf einen Wert eingestellt habe, der etwas größer als 0: 0,1 dpi ist. Dies wird immer noch als quadratische Ecken gerendert, aber die anderen Ecken werden nicht auf den Radius 0 gesetzt.

18
John Pisello

Versuchen Sie den folgenden Code

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<corners
    Android:bottomLeftRadius="30dp"
    Android:bottomRightRadius="30dp"
    Android:topLeftRadius="30dp"
    Android:topRightRadius="30dp" />
<solid Android:color="#1271BB" />

<stroke
    Android:width="5dp"
    Android:color="#1271BB" />

<padding
    Android:bottom="1dp"
    Android:left="1dp"
    Android:right="1dp"
    Android:top="1dp" /></shape>
0
Mujahid khan