У меня есть на главном экране, эта часть кода < /p>
CompositionLocalProvider(LocalAvailableHeight provides availableHeight) {
Box(
modifier = Modifier
.fillMaxSize()
.windowInsetsPadding(WindowInsets.navigationBars)
) {
// Контент
Column(
modifier = Modifier
.fillMaxSize()
.nestedScroll(nestedScrollConnection)
.background(Color.Transparent)
.verticalScroll(scrollState),
) {
// отступ сверху учитывая размеры верхней панельки TopBar
Spacer(
modifier = Modifier.height(with(density){maxTopHeightSpacer.toDp()} )
)
if (!LocalInspectionMode.current && navHostController != null) {
NestedNavigationMain(navHostController)
} else {
var state: FilmHubState by remember { mutableStateOf(FilmHubState()) }
FilmHubContent(state = state)
}
// отступ оставляем только на тех экранах которые имеют навигационную панельку снизу
when (currentRoute) {
FilmHub::class.qualifiedName, Favorite::class.qualifiedName, Menu::class.qualifiedName,
Search::class.qualifiedName, Profile::class.qualifiedName -> {
// отступ снизу учитывая размеры нижней навигационной панельки (FabBottomBar)
Spacer(
modifier = Modifier
.height(barHeight + floatingButtonHeight + (subFabCentralPadding * animFabSpace.value))
)
}
Info::class.qualifiedName -> {
// отступ под плавающую кнопку боковую
Spacer(modifier = Modifier.fillMaxWidth().height(40.dp))
}
else -> {
// не знаю как это влияет, но при добавлении пустого спейсера снизу под каждый экран фиксит баг ТопБара что он немного прокручивается вниз
// scrollTo перестает при первом рендере экрана прокручивать, если убрать топ бар немного опустится вниз и будет видно что страница немного прокрутилась вниз и это при открытии нового экрана
Spacer(modifier = Modifier.fillMaxWidth().height(4.dp))
}
}
}
< /code>
И у меня есть экран, который заменяет indestnavigationmain < /p>
@Composable
fun FavoriteContent(
modifier: Modifier = Modifier,
state: FavoriteState,
country: ECountry = ECountry.UnitedStates,
openInfoMovie: (String, ECountry?, String) -> Unit = {movieId, countryDisplay, author ->},
loadMoreFavoriteFilms: () -> Unit = {},
) {
if (state.favoriteMovieList != null) {
MovieVerticalGrid(
modifier = modifier.heightIn(max = LocalAvailableHeight.current).fillMaxWidth(),
paddingValues = PaddingValues(horizontal = 40.dp),
isLoading = state.favoriteMovieList.isLoading,
endReached = state.favoriteMovieList.endReached,
movieList = state.favoriteMovieList.paginationData.values.toList(),
onItemClicked = {
with(state.favoriteMovieList.paginationData.entries.elementAt(it).value) {
openInfoMovie(this.id, this.countryDisplay, this.author)
}
},
loadMoreFilms = loadMoreFavoriteFilms,
)
} else {
Box(
modifier = Modifier
.fillMaxSize()
.background(Color.Green),
contentAlignment = Alignment.Center
) {
Text(
modifier = Modifier.width(300.dp),
text = stringResource(R.string.favorite_screen_text_info_no_favorite, country),
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.primary,
textAlign = TextAlign.Center
)
}
}
}
< /code>
Как добавить для полного размера блока? Когда у меня есть основная колонка с вертикалью. И у меня есть Inside MovieVerticleGrid -> LazyVerticalGrid, который дает сбою, если я добавляю Intrinsicize.max для высоты внешнего столбца. Потому что, если я достигаю этой цели, чтобы сделать полным пространством для коробки, то я могу поместить свой текст в центр внутри коробки < /p>
.fillmaxsize () также не поможет, если я не использую Intrinsicize.max < /p>
Box(
modifier = Modifier
.fillMaxSize()
.background(Color.Green),
contentAlignment = Alignment.Center
) {
Подробнее здесь: https://stackoverflow.com/questions/797 ... ere-all-sc