Ich habe Probleme, die Dokumentation der Definitionen von Formen in XML für Android zu finden. Ich möchte einen einfachen Kreis definieren, der in einer XML-Datei mit einer durchgehenden Farbe gefüllt ist, um ihn in meine Layoutdateien aufzunehmen.
Leider deckt die Dokumentation auf Android.com nicht die XML-Attribute der Shape-Klassen ab. Ich denke, ich sollte eine ArcShape verwenden, um einen Kreis zu zeichnen, aber es gibt keine Erklärung, wie die Größe, die Farbe oder der Winkel eingestellt werden muss, um einen Kreis aus einem Bogen zu machen.
Dies ist ein einfacher Kreis, der in Android gezeichnet werden kann.
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<solid
Android:color="#666666"/>
<size
Android:width="120dp"
Android:height="120dp"/>
</shape>
Legen Sie dies als Ansichtshintergrund fest
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<stroke
Android:width="1dp"
Android:color="#78d9ff"/>
</shape>
Für Vollkreis verwenden:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<solid
Android:color="#48b3ff"/>
</shape>
Fest mit Schlaganfall:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<solid Android:color="#199fff"/>
<stroke
Android:width="2dp"
Android:color="#444444"/>
</shape>
Note: Damit die oval
-Form als Kreis angezeigt wird, sollte in diesen Beispielen entweder Ihre Ansicht, dass Sie diese Form als Hintergrund verwenden, ein Quadrat sein, oder Sie müssen die height
- und width
-Eigenschaften des Shape-Tags festlegen auf einen gleichen Wert.
Code für einfachen Kreis
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="oval">
<solid Android:color="#9F2200"/>
<stroke Android:width="2dp" Android:color="#fff" />
<size Android:width="80dp" Android:height="80dp"/>
</shape>
Schauen Sie sich die Android SDK-Beispiele an. Im ApiDemos-Projekt gibt es mehrere Beispiele:
/ ApiDemos/res/drawable /
Bei Kreisen mit Verlaufsfüllung sieht es ungefähr so aus:
<? xml version = "1.0" coding = "utf-8"?> <shape xmlns: Android = "http://schemas.Android.com/apk/res/Android" Android: shape = "oval"> <gradient Android: startColor = "# FFFF0000" Android: endColor = "# 80FF00FF" Android: angle = "270" /> </ Form>
Sie können VectorDrawable wie folgt verwenden:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:width="200dp"
Android:height="200dp"
Android:viewportHeight="64"
Android:viewportWidth="64">
<path
Android:fillColor="#ff00ff"
Android:pathData="M22,32
A10,10 0 1,1 42,32
A10,10 0 1,1 22,32 Z" />
</vector>
Die obige XML-Datei wird wie folgt dargestellt:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<!-- fill color -->
<solid Android:color="@color/white" />
<!-- radius -->
<stroke
Android:width="1dp"
Android:color="@color/white" />
<!-- corners -->
<corners
Android:radius="2dp"/>
</shape>
Hier ist eine einfache circle_background.xml für Vormaterial:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true">
<shape Android:shape="oval">
<solid Android:color="@color/color_accent_dark" />
</shape>
</item>
<item>
<shape Android:shape="oval">
<solid Android:color="@color/color_accent" />
</shape>
</item>
</selector>
Sie können das Attribut 'Android:background="@drawable/circle_background"
in der Layoutdefinition Ihrer Schaltfläche verwenden
Wenn Sie einen Kreis wie diesen haben möchten
Versuchen Sie es mit dem folgenden Code:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:innerRadius="0dp"
Android:shape="ring"
Android:thicknessRatio="2"
Android:useLevel="false" >
<solid Android:color="@Android:color/white" />
<stroke
Android:width="1dp"
Android:color="@Android:color/darker_gray" /></shape>
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<stroke
Android:width="10dp"
Android:color="@color/white"/>
<gradient
Android:startColor="@color/red"
Android:centerColor="@color/red"
Android:endColor="@color/red"
Android:angle="270"/>
<size
Android:width="250dp"
Android:height="250dp"/>
</shape>
Sie können es versuchen -
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="ring"
Android:innerRadiusRatio="700"
Android:thickness="100dp"
Android:useLevel="false">
<solid Android:color="#CCC" />
</shape>
Sie können den Radius des Kreises auch anpassen, indem Sie Android:thickness
einstellen.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="oval">
<solid Android:color="@color/text_color_green"/>
<!-- Set the same value for both width and height to get a circular shape -->
<size Android:width="250dp" Android:height="250dp"/>
</shape>
</item>
</selector>
res/drawble/circle_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="oval">
<solid Android:color="#e42828"/>
<stroke Android:color="#3b91d7" Android:width="5dp"/>
<!-- Set the same value for both width and height to get a circular shape -->
<size Android:width="250dp" Android:height="250dp"/>
</shape>
</item>
</selector>
beispiel online: https://code-Android-example.blogspot.com/2019/07/how-to-circle-shape-in-xml-drawable-Android.html
Ich konnte aus irgendeinem Grund keinen Kreis in meinem ConstraintLayout zeichnen, ich konnte einfach keine der obigen Antworten verwenden.
Was perfekt funktioniert hat, ist eine einfache Textansicht mit dem Text, der ausgegeben wird, wenn Sie "Alt + 7" drücken:
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textColor="#0075bc"
Android:textSize="40dp"
Android:text="•"></TextView>