Как отобразить TopAppBar в местах назначения, которые не принадлежат TopLevelDestinations, с помощью Jetpack Compose?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как отобразить TopAppBar в местах назначения, которые не принадлежат TopLevelDestinations, с помощью Jetpack Compose?

Сообщение Anonymous »

В своем коде я использую пример приложения Now In Android. TopAppBar загружается встроенным образом в файл NiaApp.
Но если я создаю экран, маршрут которого не принадлежит TopLevelDestination, TopAppBar исчезает. когда я перехожу по этому маршруту.
Вот несколько снимков экрана:
[img]https:/ /i.sstatic.net/43lsJnLj.png[/img]

Как видите, TopAppBar отсутствует, а также при прокрутке вверх контент смешивается со статусом устройства полоса, показывающая время, сигнал Wi-Fi и т. д.:
Изображение

Почему TopAppBar исчезает в этих местах назначения и как я могу заставить его появиться?
Это код, который генерирует показанный экран на скриншотах.
Код:
@ExperimentalFoundationApi
@Composable
fun FileScreen(
onFileClick: (String) -> Unit,
modifier: Modifier = Modifier,
fileName: String?,
viewModel: FileViewModel = hiltViewModel(),

) {

val uiState by viewModel.uiState.collectAsStateWithLifecycle()
FileScreen(modifier = modifier, uiState = uiState)
}


@ExperimentalFoundationApi
@Composable
internal fun FileScreen(
modifier: Modifier,
uiState: FileViewModel.FileUiState
) {

val state = rememberLazyListState()
Box(
modifier = modifier,
) {
LazyColumn(
state = state,
horizontalAlignment = Alignment.CenterHorizontally,
) {
item {
Spacer(Modifier.windowInsetsTopHeight(WindowInsets.safeDrawing))
}
when (uiState) {
FileViewModel.FileUiState.Empty -> item { EmptyState() }
is FileViewModel.FileUiState.Error -> item { ErrorState() }
is FileViewModel.FileUiState.Loaded -> item {
FileToolbar(uiState = uiState)
FileResourceCardExpanded()
}
FileViewModel.FileUiState.Loading -> item { LoadingState() }
}
item {
Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.safeDrawing))
}
}
val itemsAvailable = 1
val scrollbarState = state.scrollbarState(
itemsAvailable = itemsAvailable,
)
state.DraggableScrollbar(
modifier = Modifier
.fillMaxHeight()
.windowInsetsPadding(WindowInsets.systemBars)
.padding(horizontal = 2.dp)
.align(Alignment.CenterEnd),
state = scrollbarState,
orientation = Orientation.Vertical,
onThumbMoved = state.rememberDraggableScroller(
itemsAvailable = itemsAvailable,
),
)
}
}


@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun FileToolbar(
uiState: FileViewModel.FileUiState,
modifier: Modifier = Modifier,
showBackButton: Boolean = true,
onBackClick: () -> Unit = {},
) {
Row(
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically,
modifier = modifier
.fillMaxWidth()
.padding(bottom = 32.dp),
) {
if (showBackButton) {
IconButton(onClick = { onBackClick() }) {
Icon(
imageVector = LPlusIcons.ArrowBack,
contentDescription = stringResource(
id = R.string.core_ui_back,
),
)
}
} else {
Spacer(modifier = Modifier.width(1.dp))
}
}
}


@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun FileResourceCardExpanded() {
Card(
shape = RoundedCornerShape(16.dp),
colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface),
) {
Column {
Box(
modifier = Modifier.padding(16.dp),
) {
Column {
Spacer(modifier = Modifier.height(12.dp))
Row {
var title: String = "Title"
UniversalisResourceTitle(
title,
modifier = Modifier.fillMaxWidth((.8f)),
)
Spacer(modifier = Modifier.weight(1f))
}
Spacer(modifier = Modifier.height(14.dp))
Row(verticalAlignment = Alignment.CenterVertically) {
Spacer(modifier = Modifier.height(14.dp))
var lipsum = LoremIpsum()
Text(lipsum.values.last())
}
}
}
}
}
}



Подробнее здесь: https://stackoverflow.com/questions/790 ... leveldesti
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Jetpack Compose — лучшая практика условного TopAppBar для всего приложения
    Anonymous » » в форуме Android
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Jetpack Compose — итоговая строка TopAppBar
    Anonymous » » в форуме Android
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Как управлять поведением прокрутки для каждого экрана при использовании общего TopAppBar в Jetpack Compose?
    Anonymous » » в форуме Android
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Сворачивание TopAppBar в Jetpack Compose Material 3
    Anonymous » » в форуме Android
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Сворачивание TopAppBar в Jetpack Compose Material 3
    Anonymous » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»