Badge в TextView

Всем привет,

Имеется RecyclerView, в нем находятся n-количество cells. Каждая cell имеет TextView. Как можно нарисовать точку на этом TextView, но что бы она была поверх этого cell ?

P.S padding между cell не должен быть, так получилось нарисовать.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Andrew

Как вариант можно создать свою разметку для элемента списка с учетом ваших требований. Вот например простые квадраты:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="100dp"
    android:layout_height="100dp">

    <TextView
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_gravity="top|left"
        android:background="@android:color/holo_blue_light"
        android:gravity="center"
        android:text="First is below"/>

    <TextView
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_gravity="bottom|right"
        android:background="@android:color/holo_green_light"
        android:gravity="center"
        android:text=" Last is on top"/>

</FrameLayout>

вот как выглядит:

введите сюда описание изображения

Вот есть вопрос-первоисточник. По сути вам нужно создавать такую штуку самому:

  1. Сделать одну вьюху поверх другой.
  2. Засетить фон из drawable который
  3. Подогнать по расположеню

Вот если сделать все что описано выше получается такая разметка элемента списка:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:padding="10dp"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:background="@android:color/holo_blue_light"
        android:gravity="center"
        android:layout_marginTop="10dp"
        android:text="Some text" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|end"
        android:background="@drawable/test"
        android:padding="5dp"
        android:gravity="center"
        android:text="20" />

</FrameLayout>

вот drawable фон:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke
        android:width="1dp"
        android:color="#f00" />

    <solid android:color="#f00" />

    <corners
        android:bottomLeftRadius="20dp"
        android:bottomRightRadius="20dp"
        android:radius="5dp"
        android:topLeftRadius="20dp"
        android:topRightRadius="20dp" />
</shape>

вот итог:

введите сюда описание изображения

ну а дальше уже сетите это все в адаптере списка и подгоняете размеры.

→ Ссылка