Machen Sie Ihr Abzeichen zu einem TextView
, damit Sie den numerischen Wert durch Aufrufen auf einen beliebigen Wert einstellen können setText()
. Legen Sie den Hintergrund von TextView
als XML- <shape>
Zeichen fest, mit dem Sie einen durchgezogenen Kreis oder einen Verlaufskreis mit einem Rahmen erstellen können. Ein XML-Zeichen wird an die Ansicht angepasst, da die Größe mit mehr oder weniger Text geändert wird.
res / drawable / badge_circle.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="#F00" />
<stroke
android:width="2dip"
android:color="#FFF" />
<padding
android:left="5dip"
android:right="5dip"
android:top="5dip"
android:bottom="5dip" />
</shape>
Sie müssen sich jedoch ansehen, wie das Oval / der Kreis mit großen 3-4-stelligen Zahlen skaliert. Wenn dieser Effekt unerwünscht ist, versuchen Sie es mit einem abgerundeten Rechteck wie unten. Bei kleinen Zahlen sieht das Rechteck immer noch wie ein Kreis aus, wenn die Radien zusammenlaufen.
res / drawable / badge_circle.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="10dip"/>
<solid
android:color="#F00" />
<stroke
android:width="2dip"
android:color="#FFF" />
<padding
android:left="5dip"
android:right="5dip"
android:top="5dip"
android:bottom="5dip" />
</shape>
Wenn der skalierbare Hintergrund erstellt wurde, fügen Sie ihn einfach wie folgt zum Hintergrund von a hinzu TextView
:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="10"
android:textColor="#FFF"
android:textSize="16sp"
android:textStyle="bold"
android:background="@drawable/badge_circle"/>
Schließlich können diese TextView
Abzeichen in Ihrem Layout über den entsprechenden Schaltflächen / Registerkarten platziert werden. Ich würde dies wahrscheinlich tun, indem ich jeden Knopf mit seinem Abzeichen in einem RelativeLayout
Container gruppiere , wie folgt:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/myButton"
android:layout_width="65dip"
android:layout_height="65dip"/>
<TextView
android:id="@+id/textOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/myButton"
android:layout_alignRight="@id/myButton"
android:text="10"
android:textColor="#FFF"
android:textSize="16sp"
android:textStyle="bold"
android:background="@drawable/badge_circle"/>
</RelativeLayout>
Hoffentlich sind das genug Informationen, um Sie zumindest in die richtige Richtung zu lenken!
oval
Version des Beispiels und fügen Sie ein<size>
Element hinzu, um Proportionen für die Breite / HöheAndroid ViewBadger
Eine einfache Möglichkeit, eine bestimmte Android-Ansicht zur Laufzeit zu "kennzeichnen", ohne dies im Layout berücksichtigen zu müssen.
Fügen Sie eine
.jar
Datei in Ihrem libs-Ordner hinzuKlicken Sie hier, um das Beispiel herunterzuladen
siehe Beispiel auf Github
Einfaches Beispiel:
quelle
Einfachster Hack, indem Sie nur Stil geben
TextView
.quelle
für die Leute, die nach Xamarin Android suchen, kann diesen Code verwenden
Und in MainActivity
quelle
Nur um hinzuzufügen. Wenn jemand eine gefüllte Kreisblase mit der Ringform anstelle des Ovals implementieren möchte, finden Sie hier das Codebeispiel für das Hinzufügen der Blasenzahl zu den Schaltflächen der Aktionsleiste. Dies kann jedoch zu jeder Schaltfläche hinzugefügt werden.
(nenne es
bage_circle.xml
):Möglicherweise müssen Sie die Dicke an Ihre Bedürfnisse anpassen.
Das Ergebnis wird ungefähr so aussehen:
Hier ist das Layout für die Schaltfläche (nennen Sie es
badge_layout.xml
):Im Menü Element erstellen:
Um
onCreateOptionsMenu
auf den Menüpunkt zu verweisen:Legen Sie nach Erhalt der Benachrichtigung für Nachrichten die Anzahl fest:
Dieser Code verwendet Iconify-fontawesome .
quelle