Плавающая кнопка действия (FAB) — это выделенная кнопка, которая позволяет пользователю выполнить основное действие в приложении. Он продвигает одно целенаправленное действие, которое является наиболее распространенным путем, который может предпринять пользователь, и обычно находится в правом нижнем углу экрана.
Рассмотрим эти три варианта использования FAB:
- Создать новый элемент : в приложении для создания заметок FAB можно использовать для быстрого создания новой заметки.
- Добавить новый контакт . В приложении чата FAB может открыть интерфейс, позволяющий пользователю добавлять кого-либо в разговор.
- Расположение по центру : в интерфейсе карты FAB может центрировать карту по текущему местоположению пользователя.
В Material Design существует четыре типа FAB:
- FAB : плавающая кнопка обычного размера.
- Small FAB : маленькая плавающая кнопка действия.
- Большая FAB : большая плавающая кнопка действия.
- Расширенный FAB : плавающая кнопка действия, которая содержит больше, чем просто значок.
поверхность API
Хотя существует несколько составных элементов, которые вы можете использовать для создания плавающих кнопок действий в соответствии с Material Design, их параметры не сильно отличаются. Среди ключевых параметров, на которые следует обратить внимание, можно выделить следующие:
-
onClick
: функция, вызываемая, когда пользователь нажимает кнопку. -
containerColor
: цвет кнопки. -
contentColor
: цвет значка.
Плавающая кнопка действия
Чтобы создать общую кнопку плавающего действия, используйте базовый компонуемый элемент FloatingActionButton
. Следующий пример демонстрирует базовую реализацию FAB:
@Composable
fun Example(onClick: () -> Unit) {
FloatingActionButton(
onClick = { onClick() },
) {
Icon(Icons.Filled.Add, "Floating action button.")
}
}
Эта реализация выглядит следующим образом:

Маленькая кнопка
Чтобы создать небольшую плавающую кнопку действия, используйте составной объект 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.")
}
}
Эта реализация выглядит следующим образом:

Большая кнопка
Чтобы создать большую плавающую кнопку действия, используйте составной объект LargeFloatingActionButton
. Этот составной элемент существенно не отличается от других примеров, за исключением того факта, что в результате получается кнопка большего размера.
Ниже приведена простая реализация большого FAB.
@Composable
fun LargeExample(onClick: () -> Unit) {
LargeFloatingActionButton(
onClick = { onClick() },
shape = CircleShape,
) {
Icon(Icons.Filled.Add, "Large floating action button")
}
}
Эта реализация выглядит следующим образом:

Расширенная кнопка
Вы можете создавать более сложные плавающие кнопки действий с помощью составного элемента 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") },
)
}
Эта реализация выглядит следующим образом:
