Плавающая кнопка действия

Плавающая кнопка действия (FAB) — это кнопка с акцентом на действие, позволяющая пользователю выполнить основное действие в приложении. Она активирует одно конкретное действие, которое является наиболее распространённым вариантом действий пользователя, и обычно располагается в правом нижнем углу экрана.

Рассмотрим три варианта использования FAB:

  • Создать новый элемент : в приложении для создания заметок FAB может использоваться для быстрого создания новой заметки.
  • Добавить новый контакт : в приложении чата FAB может открыть интерфейс, позволяющий пользователю добавить кого-то в беседу.
  • Центрировать местоположение : в интерфейсе карты FAB может центрировать карту относительно текущего местоположения пользователя.

В Material Design существует четыре типа FAB:

  • FAB : Плавающая кнопка действия обычного размера.
  • Маленькая FAB : небольшая плавающая кнопка действия.
  • Большая FAB : большая плавающая кнопка действия.
  • Расширенная FAB : плавающая кнопка действия, которая содержит больше, чем просто значок.
Пример каждого из четырех компонентов плавающей кнопки действия.
Рисунок 1. Четыре типа плавающих кнопок действий.

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

Хотя существует несколько компонуемых элементов, которые можно использовать для создания плавающих кнопок действий в соответствии с Material Design, их параметры не сильно отличаются. Среди ключевых параметров, которые следует учитывать, следующие:

  • onClick : Функция вызывается, когда пользователь нажимает кнопку.
  • containerColor : Цвет кнопки.
  • contentColor : Цвет значка.

Плавающая кнопка действия

Для создания плавающей кнопки общего назначения используйте базовый компонуемый элемент FloatingActionButton . В следующем примере показана базовая реализация FAB:

@Composable
fun Example(onClick: () -> Unit) {
    FloatingActionButton(
        onClick = { onClick() },
    ) {
        Icon(Icons.Filled.Add, "Floating action button.")
    }
}

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

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

Маленькая кнопка

Чтобы создать небольшую плавающую кнопку действия, используйте компонуемый элемент SmallFloatingActionButton . В следующем примере показано, как это сделать, добавив пользовательские цвета.

@Composable
fun SmallExample(onClick: () -> Unit) {
    SmallFloatingActionButton(
        onClick = { onClick() },
        containerColor = MaterialTheme.colorScheme.secondaryContainer,
        contentColor = MaterialTheme.colorScheme.secondary
    ) {
        Icon(Icons.Filled.Add, "Small floating action button.")
    }
}

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

Реализация SmallFloatingActionButton, содержащая значок «добавить».
Рисунок 3. Небольшая плавающая кнопка действия.

Большая кнопка

Чтобы создать большую плавающую кнопку действия, используйте компонуемый элемент LargeFloatingActionButton . Этот компонуемый элемент ничем существенно не отличается от других примеров, за исключением того, что он создаёт кнопку большего размера.

Ниже представлена простая реализация большого FAB.

@Composable
fun LargeExample(onClick: () -> Unit) {
    LargeFloatingActionButton(
        onClick = { onClick() },
        shape = CircleShape,
    ) {
        Icon(Icons.Filled.Add, "Large floating action button")
    }
}

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

Реализация LargeFloatingActionButton, содержащая значок «добавить».
Рисунок 4. Большая плавающая кнопка действия.

Расширенная кнопка

С помощью компонуемого объекта ExtendedFloatingActionButton можно создавать более сложные плавающие кнопки действий. Ключевое отличие от FloatingActionButton заключается в наличии отдельных параметров icon и text . Они позволяют создавать кнопки с более сложным содержимым, масштабируемым в соответствии с его содержимым.

В следующем фрагменте показано, как реализовать ExtendedFloatingActionButton , с примерами значений, переданных для icon и text .

@Composable
fun ExtendedExample(onClick: () -> Unit) {
    ExtendedFloatingActionButton(
        onClick = { onClick() },
        icon = { Icon(Icons.Filled.Edit, "Extended floating action button.") },
        text = { Text(text = "Extended FAB") },
    )
}

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

Реализация ExtendedFloatingActionButton, которая отображает текст «расширенная кнопка» и значок редактирования.
Рисунок 5. Плавающая кнопка действия с текстом и значком.

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