Haga que su insignia sea a TextView
, lo que le permite establecer el valor numérico en cualquier cosa que desee llamando setText()
. Establezca el fondo del TextView
como un elemento de <shape>
diseño XML , con el que puede crear un círculo sólido o degradado con un borde. Un elemento de diseño XML se escalará para adaptarse a la vista a medida que cambia de tamaño con más o menos texto.
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>
Sin embargo, tendrá que observar cómo el óvalo / círculo se escala con números grandes de 3-4 dígitos. Si este efecto no es deseable, pruebe con un enfoque de rectángulo redondeado como el siguiente. Con números pequeños, el rectángulo aún se verá como un círculo cuando los radios converjan.
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>
Con el fondo escalable creado, simplemente agréguelo al fondo de a TextView
, así:
<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"/>
Finalmente, estas TextView
insignias se pueden colocar en su diseño encima de los botones / pestañas correspondientes. Probablemente haría esto agrupando cada botón con su insignia en un RelativeLayout
contenedor, así:
<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>
¡Con suerte, es suficiente información para que al menos apunte en la dirección correcta!