Odznaki

Używaj plakietki do wyświetlania małego elementu wizualnego wskazującego status lub wartość liczbową innego elementu kompozycyjnego. Oto kilka typowych scenariuszy, w których możesz używać plakietki:

  • Powiadomienia: na ikonie aplikacji wyświetla liczbę nieprzeczytanych powiadomień. lub dzwonek powiadomień.
  • Wiadomości: oznaczaj nowe lub nieprzeczytane wiadomości w aplikacji do obsługi czatu.
  • Aktualizacje stanu: pokazuj stan zadania, np. „ukończone”, "w postępu”, czy „niepowodzenie”.
  • Liczba produktów w koszyku: wyświetla liczbę produktów w koszyku użytkownika.
  • Nowe treści: wyróżnij nowe treści lub funkcje dostępne dla użytkowników.
.
Inny przykład komponentu plakietki.
Rysunek 1. Przykłady plakietek
.

Interfejs API

Aby wdrożyć plakietki w aplikacji, użyj funkcji kompozycyjnej BadgedBox. it w ostatecznym rozrachunku – i to w końcu. Możesz kontrolować jego wygląd za pomocą parametry:

  • content: treść kompozycyjna zawarta w elemencie BadgedBox. Zwykle Icon
  • badge: element kompozycyjny wyświetlany jako plakietka na treści. Zwykle jest to dedykowana funkcja kompozycyjna Badge.

Podstawowy przykład

Ten fragment kodu przedstawia podstawową implementację elementu BadgedBox:

@Composable
fun BadgeExample() {
    BadgedBox(
        badge = {
            Badge()
        }
    ) {
        Icon(
            imageVector = Icons.Filled.Mail,
            contentDescription = "Email"
        )
    }
}

W tym przykładzie wyświetla się plakietka, która nakłada się na podany element kompozycyjny Icon. Notatka następujące elementy w kodzie:

  • BadgedBox to ogólny kontener.
  • Argument parametru badge w BadgedBox to Badge. Funkcja Badge nie ma własnych argumentów, więc aplikacja wyświetla wartość domyślną czyli małe czerwone kółko.
  • Icon jest argumentem parametru content w tabeli BadgedBox. it to ikona, nad którą wyświetla się plakietka. W tym przypadku jest to ikona poczty.

Wygląda to tak:

Prosta plakietka, która nie zawiera treści.
Rysunek 2. Minimalne wdrożenie plakietki.
.

Szczegółowy przykład

Ten fragment kodu pokazuje, jak wyświetlić na plakietce wartości, które reagowanie na działania użytkownika.

@Composable
fun BadgeInteractiveExample() {
    var itemCount by remember { mutableStateOf(0) }

    Column(
        verticalArrangement = Arrangement.spacedBy(16.dp)
    ) {
        BadgedBox(
            badge = {
                if (itemCount > 0) {
                    Badge(
                        containerColor = Color.Red,
                        contentColor = Color.White
                    ) {
                        Text("$itemCount")
                    }
                }
            }
        ) {
            Icon(
                imageVector = Icons.Filled.ShoppingCart,
                contentDescription = "Shopping cart",
            )
        }
        Button(onClick = { itemCount++ }) {
            Text("Add item")
        }
    }
}

W tym przykładzie zastosowano ikonę koszyka z plakietką liczby produktów w koszyku użytkownika.

  • BadgedBox wyświetla się tylko wtedy, gdy liczba elementów przekracza 0.
  • Argumenty funkcji containerColor i contentColor określają wygląd. logo.
  • Element Text kompozycyjny dla boksu treści Badge pojawia się w: logo. W takim przypadku wyświetla się liczba produktów w koszyku.

Implementacja wygląda tak:

Wdrożenie plakietki, które zawiera liczbę produktów w koszyku.
Rysunek 3. Plakietka, która pokazuje liczbę produktów w koszyku.

Dodatkowe materiały