Stwórz odznakę a TextView
, umożliwiając ustawienie wartości numerycznej na dowolną wartość, dzwoniąc setText()
. Ustaw tło TextView
jako plik XML do <shape>
rysowania, za pomocą którego możesz utworzyć pełne lub gradientowe koło z obramowaniem. Plik XML do rysowania będzie skalowany, aby dopasować go do widoku w miarę zmiany rozmiaru z większą lub mniejszą ilością tekstu.
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>
Musisz jednak przyjrzeć się, jak owal / okrąg skaluje się z dużymi 3-4 cyframi. Jeśli ten efekt jest niepożądany, wypróbuj podejście zaokrąglonego prostokąta, jak poniżej. Przy małych liczbach prostokąt nadal będzie wyglądał jak okrąg, gdy promienie zbiegają się razem.
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>
Po utworzeniu skalowalnego tła po prostu dodajesz je do tła a TextView
, na przykład:
<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"/>
Wreszcie, te TextView
odznaki można umieścić w swoim układzie na górze odpowiednich przycisków / zakładek. Prawdopodobnie zrobiłbym to, grupując każdy przycisk z jego znaczkiem w RelativeLayout
kontenerze, na przykład:
<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>
Miejmy nadzieję, że to wystarczająca ilość informacji, aby przynajmniej wskazać Ci właściwy kierunek!