Komponent Chip
to kompaktowy, interaktywny element interfejsu. Reprezentują one złożone elementy, takie jak kontakty lub tagi, często z ikoną i etykietą. Może być zaznaczany, usuwany lub klikalny.
Oto 4 rodzaje komponentów i miejsca, w których możesz ich używać:
- Pomoc: prowadzi użytkownika podczas wykonywania zadania. Często pojawia się jako tymczasowy element interfejsu w odpowiedzi na dane wejściowe użytkownika.
- Filtr: umożliwia użytkownikom doprecyzowanie treści z zadanego zbioru opcji. Można je zaznaczać i odznaczać. Po zaznaczeniu mogą zawierać ikonę znacznika wyboru.
- Wejście: informacje podawane przez użytkownika, np. wybory w menu. Mogą zawierać ikonę i tekst oraz przycisk „X” do usunięcia.
- Sugestia: wyświetla użytkownikowi rekomendacje na podstawie jego ostatniej aktywności lub danych wejściowych. Zazwyczaj pojawiają się pod polem wprowadzania danych, aby zachęcić użytkownika do podjęcia działania.
Interfejs API
Istnieją 4 komponenty odpowiadające 4 typom komponentów. W następnych sekcjach szczegółowo omawiamy te komponenty i ich różnice. Mają jednak wspólne te parametry:
label
: ciąg znaków, który pojawia się na elemencie.icon
: ikona wyświetlana na początku elementu. Niektóre z kompozytowanych komponentów mają oddzielne parametryleadingIcon
itrailingIcon
.onClick
: funkcja Lambda wywoływana przez element, gdy użytkownik go naciśnie.
Element pomocy
Komponent AssistChip
to prosty sposób na tworzenie elementów pomocy, które kierują użytkownika w określonym kierunku. Jedną z takich funkcji jest parametr leadingIcon
, który umożliwia wyświetlanie ikony po lewej stronie elementu. Ten przykład pokazuje, jak to zrobić:
@Composable fun AssistChipExample() { AssistChip( onClick = { Log.d("Assist chip", "hello world") }, label = { Text("Assist chip") }, leadingIcon = { Icon( Icons.Filled.Settings, contentDescription = "Localized description", Modifier.size(AssistChipDefaults.IconSize) ) } ) }
Ta implementacja wygląda tak.
Ikona filtra
Komponent FilterChip
wymaga śledzenia, czy element jest wybrany. W tym przykładzie pokazujemy, jak wyświetlić ikonę zaznaczonego elementu tylko wtedy, gdy użytkownik go wybierze:
@Composable fun FilterChipExample() { var selected by remember { mutableStateOf(false) } FilterChip( onClick = { selected = !selected }, label = { Text("Filter chip") }, selected = selected, leadingIcon = if (selected) { { Icon( imageVector = Icons.Filled.Done, contentDescription = "Done icon", modifier = Modifier.size(FilterChipDefaults.IconSize) ) } } else { null }, ) }
Ta implementacja wygląda tak, gdy nie jest zaznaczona:
Po wybraniu wygląda tak:
Element wprowadzania tekstu
Możesz użyć komponentu InputChip
, aby tworzyć elementy, które są wynikiem interakcji z użytkownikiem. Na przykład w kliencie poczty, gdy użytkownik pisze e-maila, element wejściowy może reprezentować osobę, której adres został wpisany w polu „do:”.
Poniższa implementacja pokazuje element wejściowy, który jest już wybrany. Użytkownik odrzuca element, gdy go naciśnie.
@Composable fun InputChipExample( text: String, onDismiss: () -> Unit, ) { var enabled by remember { mutableStateOf(true) } if (!enabled) return InputChip( onClick = { onDismiss() enabled = !enabled }, label = { Text(text) }, selected = enabled, avatar = { Icon( Icons.Filled.Person, contentDescription = "Localized description", Modifier.size(InputChipDefaults.AvatarSize) ) }, trailingIcon = { Icon( Icons.Default.Close, contentDescription = "Localized description", Modifier.size(InputChipDefaults.AvatarSize) ) }, ) }
Ta implementacja wygląda tak.
Element z sugestią
Komponent SuggestionChip
jest najprostszym z wymienionych na tej stronie, zarówno pod względem definicji interfejsu API, jak i typowych zastosowań. Elementy sugestii zawierają dynamicznie generowane wskazówki. Na przykład w aplikacji do czatu z AI możesz używać elementów z supozycjami, aby przedstawiać możliwe odpowiedzi na najnowszą wiadomość.
Rozważ implementację SuggestionChip
:
@Composable fun SuggestionChipExample() { SuggestionChip( onClick = { Log.d("Suggestion chip", "hello world") }, label = { Text("Suggestion chip") } ) }
Ta implementacja wygląda tak:
Element
Wszystkie przykłady w tym dokumencie wykorzystują podstawowe komponenty, które mają płaski wygląd. Jeśli chcesz użyć elementu, który ma podwyższony wygląd, użyj jednego z tych 3 komponentów: