Frage

Ich bin derzeit eine Reihe von Kreisen auf einer Leinwand in einer benutzerdefinierten Ansicht in Code zu ziehen. die Kreise sind statisch und ändern sich nicht. Ich mag sie mit einem ShapeDrawable in xml zu helfen, meinen Code zu bereinigen ziehen. Ich werde eine Reihe von verschiedenen Drawables hat, die der Benutzer auswählen kann und deshalb mag ich nicht, dies in Code zu tun. mit 3 oder 4 xml Drawables scheint viel sauberer zu mir.

Ich habe einen Kreis in XML erstellt eine ShapeDrawable verwenden, aber ich bin nicht in der Lage mehr als eine Form der XML hinzuzufügen.

Wie füge ich mehrere Formen zu einem XML-Dokument mit ShapeDrawable.

War es hilfreich?

Lösung 2

Ich denke, dass ich eine Lösung gefunden habe mehrere Formen in meiner XML-Datei mit Schicht-Liste hinzuzufügen. Ich habe nicht dieses noch versucht, aber dies scheint t genau das, was ich will, wie die Formen in der Reihenfolge ihres Array-Index ziehen werden.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item>
      <shape>
         <solid android:color="#FFF8F8F8" />
      </shape>
   </item>
   <item android:top="23px">
      <shape>
         <solid android:color="#FFE7E7E8" />
      </shape>
   </item>
</layer-list>

Blog post

Android docs

Andere Tipps

Hier ist, wie ich einen gefüllter roten Kreis mit einem Ein-Pixel tat schwarzen Rande, mit einer weißen Nummer 72 in der Mitte:

Erstellen Sie eine XML-Datei in res \ ziehbar und nennen Sie es in geeigneter Weise, zB red_circle_black_border.xml

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <solid android:color="@android:color/black" />
        </shape>
    </item>
    <item android:top="1dp" android:left="1dp" android:right="1dp" android:bottom="1dp">
        <shape android:shape="oval">
            <solid android:color="@android:color/red" />
        </shape>
    </item>
</layer-list>

Dann verwenden Sie es in Ihrem Layout, erklären sie wie folgt:

<TextView
    android:text="72"
    android:textSize="14dp"
    android:textStyle="bold"
    android:background="@drawable/red_circle_black_border" 
    android:layout_width="22dp"
    android:layout_height="22dp"
    android:gravity="center_vertical|center_horizontal"
    android:textColor="@android:color/white" />

Offensichtlich die textsize ändern und layout_width / Höhe je nach Bedarf: -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top