Я хочу иметь разные верхние панели приложений для разных экранов в приложении 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
Форум для тех, кто программирует под Android
1727362977
Anonymous
Я хочу иметь разные верхние панели приложений для разных экранов в приложении 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")
}
}
)
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79025999/how-to-have-different-top-app-bar-but-same-bottm-app-bar-in-voyager-navigation[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия