Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
106 of 502 menu
◀ ▶

Функция Scaffold

Функция Scaffold рисует каркас экрана Material. Верхнюю панель передают в topBar, нижнюю - в bottomBar, круглую кнопку действия - в floatingActionButton. Основной экран - в лямбду content. Ей приходит отступ PaddingValues, чтобы текст не заезжал под панели.

Синтаксис

Scaffold( topBar = { }, bottomBar = { }, ) { padding -> content(padding) }

Параметры

Параметр Описание
topBar Лямбда с верхней панелью. Часто внутри вызывают TopAppBar.
bottomBar Лямбда с нижней панелью. Подходит NavigationBar или BottomAppBar.
floatingActionButton Лямбда с круглой кнопкой действия над содержимым.
snackbarHost Лямбда, куда выводят всплывающие сообщения.
content Лямбда с основным экраном. Первый аргумент - отступы под панели.

Пример

Давайте соберём экран с верхней панелью и текстом:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.padding import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.ui.Modifier class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Scaffold( topBar = { TopAppBar( title = { Text("abcde") }, ) }, ) { padding -> Text( text = "12345", modifier = Modifier.padding(padding), ) } } } }

На экране сверху будет панель с заголовком "abcde", ниже - текст "12345" с отступом под панель.

Пример

Давайте добавим нижние вкладки:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.Icon import androidx.compose.material3.NavigationBar import androidx.compose.material3.NavigationBarItem import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var tab by remember { mutableIntStateOf(0) } Scaffold( bottomBar = { NavigationBar { NavigationBarItem( selected = tab == 0, onClick = { tab = 0 }, icon = { Icon( imageVector = Icons.Filled.Home, contentDescription = "abcde", ) }, label = { Text("abcde") }, ) NavigationBarItem( selected = tab == 1, onClick = { tab = 1 }, icon = { Icon( imageVector = Icons.Filled.Settings, contentDescription = "12345", ) }, label = { Text("12345") }, ) } }, ) { padding -> Text( text = if (tab == 0) "abcde" else "12345", modifier = Modifier.padding(padding), ) } } } }

На экране снизу будет панель с двумя вкладками, а текст в центре сменится по нажатию.

Смотрите также

  • функция TopAppBar,
    которая рисует верхнюю панель каркаса
  • функция NavigationBar,
    которая ставит нижние вкладки
  • функция ModalNavigationDrawer,
    которая выдвигает боковое меню поверх экрана
  • функция Column,
    которая ставит дочерние элементы в столбец внутри content
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить