Чип

Компонент Chip — это компактный интерактивный элемент пользовательского интерфейса. Он представляет собой сложную сущность, например, контакт или тег, часто со значком и меткой. Его можно отметить, скрыть или нажать.

Ниже приведены четыре типа чипов и области их возможного использования:

  • Помощь : помогает пользователю выполнить задачу. Часто отображается как временный элемент пользовательского интерфейса в ответ на действия пользователя.
  • Фильтр : позволяет пользователям выбирать контент из набора вариантов. Фильтры можно выбирать или отменять, а при выборе они могут помечаться галочкой.
  • Ввод : представляет собой информацию, предоставленную пользователем, например, пункты меню. Может содержать значок и текст, а также значок X для удаления.
  • Предложение : предоставляет пользователю рекомендации на основе его недавних действий или ввода данных. Обычно отображается под полем ввода, подсказывая пользователю, какие действия он должен выполнить.
Пример каждого из четырех компонентов микросхемы с выделенными их уникальными характеристиками.
Рисунок 1. Четыре компонента чипа.

API поверхность

Существует четыре компонуемых объекта, соответствующих четырём типам микросхем. В следующих разделах подробно описаны эти компонуемые объекты и их различия. Однако у них есть следующие общие параметры:

  • label : Строка, которая отображается на чипе.
  • icon : Значок, отображаемый в начале чипа. Некоторые из компонуемых элементов имеют отдельные параметры leadingIcon и trailingIcon .
  • onClick : лямбда-функция, которую вызывает чип, когда пользователь нажимает на нее.

Вспомогательный чип

Компонуемый объект AssistChip предоставляет простой способ создания вспомогательного чипа, который подталкивает пользователя в определённом направлении. Его отличительной особенностью является параметр leadingIcon , позволяющий отображать значок слева от чипа. Следующий пример демонстрирует, как это реализовать:

@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)
            )
        }
    )
}

Данная реализация выглядит следующим образом.

Простой вспомогательный чип, отображающий ведущий значок и текстовую метку.
Рисунок 2. Вспомогательный чип.

Фильтр-чип

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

@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
        },
    )
}

Если эта реализация не выбрана, она выглядит следующим образом:

Невыбранный фильтр-чип, без проверки и с простым фоном.
Рисунок 3. Невыбранный фильтр-чип.

И при выборе выглядит следующим образом:

Выбранный фильтр-чип с галочкой и цветным фоном.
Рисунок 4. Выбранный фильтрующий элемент.

Входной чип

Вы можете использовать компонуемый объект InputChip для создания чипов, которые появляются в результате взаимодействия с пользователем. Например, в почтовом клиенте, когда пользователь пишет электронное письмо, чип ввода может представлять собой контакт, добавленный пользователем в поле «Кому:».

Следующая реализация демонстрирует чип ввода, который уже находится в выбранном состоянии. Пользователь закрывает чип, нажимая на него.

@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)
            )
        },
    )
}

Данная реализация выглядит следующим образом.

Чип ввода с аватаром и завершающим значком.
Рисунок 5. Входной чип.

Чип предложений

Составной элемент SuggestionChip — самый базовый из перечисленных на этой странице, как с точки зрения определения API, так и с точки зрения распространённых вариантов использования. Чипы предложений представляют собой динамически генерируемые подсказки. Например, в чат-приложении с искусственным интеллектом вы можете использовать чипы предложений для отображения возможных ответов на последнее сообщение.

Рассмотрим эту реализацию SuggestionChip :

@Composable
fun SuggestionChipExample() {
    SuggestionChip(
        onClick = { Log.d("Suggestion chip", "hello world") },
        label = { Text("Suggestion chip") }
    )
}

Эта реализация выглядит следующим образом:

Простой чип-подсказка.
Рисунок 6. Чип предложений.

Повышенный чип

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

Дополнительные ресурсы