Я хочу иметь разные верхние панели приложений для разных экранов в приложении Android, но иметь одну и ту же нижнюю панель
это моя текущая настройка
@Composable
fun MainCompose(){
AppTheme {
Navigator(ProjectScreen()) {navigation ->
Scaffold(
bottomBar = {
BottomNavigationBar()
},
){innerPadding ->
SlideTransition(
navigator = navigation,
modifier = Modifier.padding(innerPadding)
)
}
}
}
}
а это моя нижняя панель
@Composable
fun BottomNavigationBar() {
val navigator = LocalNavigator.currentOrThrow
BottomAppBar(
actions = {
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceEvenly
) {
allScreens.forEach { navLinks ->
TextButton(onClick = {
navigator.push(navLinks.screen)
}) {
Column(
horizontalAlignment = Alignment.CenterHorizontally
) {
Row {
navLinks.icon()
}
Spacer(Modifier.padding(4.dp))
Row {
Text(navLinks.name, style = MaterialTheme.typography.labelMedium)
}
}
}
}
}
}
)
}
Мне нужна отдельная верхняя панель для каждого экрана, по которому я перемещаюсь.
Пример: заголовок верхней панели домашней страницы говорит о главном, а экран настроек говорит о настройках
p>
///////////// Редактировать /////////////
Это как я это сделал
@Composable
fun MainCompose(){
AppTheme {
Navigator(ProjectScreen()) {navigation ->
val currentScreen = navigation.lastItem
Scaffold(
bottomBar = {
BottomNavigationBar()
},
topBar = {
TopBarForCurrentScreen(currentScreen ,navigation)
}
){innerPadding ->
SlideTransition(
navigator = navigation,
modifier = Modifier.padding(innerPadding)
)
}
}
}
}
лучшая забава в панели приложений
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun TopBarForCurrentScreen(currentScreen: Screen ,navigation: Navigator) {
when (currentScreen) {
is ProjectScreen -> {
TopAppBar(
navigationIcon = {
Icon(
painter = painterResource(R.drawable.project), contentDescription = "icon",
Modifier.size(20.dp)
)
},
title = {
Text(
"Projects",
style = MaterialTheme.typography.titleLarge,
fontWeight = FontWeight.Bold
)
},
colors = TopAppBarDefaults.topAppBarColors(
containerColor = MaterialTheme.colorScheme.secondaryContainer,
titleContentColor = MaterialTheme.colorScheme.onSecondaryContainer
),
actions = {
IconButton(onClick = {}) {
Icon(Icons.Filled.Search, contentDescription = "search")
}
Button (
onClick = {
navigation.push(FormScreen())
},
colors = ButtonDefaults.buttonColors(
containerColor = MaterialTheme.colorScheme.tertiaryContainer,
contentColor = MaterialTheme.colorScheme.onTertiaryContainer
)
) {
Row(
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically
) {
Column {
Icon(
Icons.Filled.Add,
contentDescription = "Create"
)
}
Column {
Text("Create")
}
}
}
}
)
}
is FormScreen -> {
TopAppBar(
navigationIcon = {
Icon(
painter = painterResource(R.drawable.form), contentDescription = "icon",
Modifier.size(20.dp)
)
},
title = {
Text(
"Forms",
style = MaterialTheme.typography.titleLarge,
fontWeight = FontWeight.Bold
)
},
colors = TopAppBarDefaults.topAppBarColors(
containerColor = MaterialTheme.colorScheme.secondaryContainer,
titleContentColor = MaterialTheme.colorScheme.onSecondaryContainer
),
)
}
else -> {
TopAppBar(
navigationIcon = {
Icon(
painter = painterResource(R.drawable.project), contentDescription = "icon",
Modifier.size(20.dp)
)
},
title = {
Text(
"Projects",
style = MaterialTheme.typography.titleLarge,
fontWeight = FontWeight.Bold
)
},
colors = TopAppBarDefaults.topAppBarColors(
containerColor = MaterialTheme.colorScheme.secondaryContainer,
titleContentColor = MaterialTheme.colorScheme.onSecondaryContainer
),
actions = {
IconButton(onClick = {}) {
Icon(Icons.Filled.Search, contentDescription = "search")
}
}
)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... navigation
Как иметь другую верхнюю панель приложения, но одну и ту же нижнюю панель приложения в навигации voyager ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Показать/скрыть нижнюю панель вкладок при использовании Voyager в Compose Multiplatform
Anonymous » » в форуме Android - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как сделать активность, не закрывая верхнюю строку состояния и нижнюю панель навигации
Anonymous » » в форуме JAVA - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как сделать активность, не закрывая верхнюю строку состояния и нижнюю панель навигации
Anonymous » » в форуме Android - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-