Сделайте свой значок a TextView
, что позволит вам установить любое числовое значение, которое вам нравится, путем вызова setText()
. Задайте фон TextView
как <shape>
доступный для рисования XML , с помощью которого вы можете создать сплошной или градиентный круг с рамкой. Вытяжной XML-файл будет масштабироваться, чтобы соответствовать представлению, поскольку он изменяется с большим или меньшим количеством текста.
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>
Тем не менее, вам нужно будет посмотреть, как овал / круг масштабируется с большими 3-4-значными числами. Если этот эффект нежелателен, попробуйте использовать прямоугольник с закругленными углами, как показано ниже. С маленькими числами прямоугольник по-прежнему будет выглядеть как круг, поскольку радиусы сходятся вместе.
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>
Создав масштабируемый фон, вы просто добавляете его к фону a 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"/>
Наконец, эти TextView
значки можно разместить в макете поверх соответствующих кнопок / вкладок. Я бы, вероятно, сделал это, сгруппировав каждую кнопку с ее значком в RelativeLayout
контейнере, например:
<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>
Надеюсь, этой информации достаточно, чтобы по крайней мере вы указали в правильном направлении!