У меня есть Scaffold с TopAppBar и HorizontalPager. Я хочу, чтобы TopAppBar сворачивался при вертикальной прокрутке содержимого HorizontalPager.
Посмотрите мой код:
@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class)
@Composable
fun MainScreen() {
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(rememberTopAppBarState())
Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
CenterAlignedTopAppBar(
title = { Text("Lagging Demonstration") },
scrollBehavior = scrollBehavior
)
},
) { innerPadding ->
val loremIpsum = LoremIpsum(1000)
val pagerState = rememberPagerState(pageCount = { 3 })
HorizontalPager(
modifier = Modifier.padding(innerPadding),
state = pagerState
) { page ->
Column(
modifier = Modifier.verticalScroll(rememberScrollState())
) {
Text(
text = loremIpsum.values.joinToString(),
modifier = Modifier.fillMaxWidth()
)
}
}
}
}
С помощью этого кода я заметил, что TopAppBar странно прыгает при прокрутке вверх:
Мои зависимости определяются следующим образом:
implementation "androidx.compose.ui:ui:1.6.2'
implementation 'androidx.compose.material3:material3:1.2.0'
implementation 'androidx.activity:activity-compose:1.8.2'
Я нашел эту проблему в Google Issue Tracker, где предлагалось применить модификатор nestedScroll(scrollBehavior.nestedScrollConnection) к Column, однако в моем случае это не помогло.
Есть ли обходной путь для устранения этого поведения?
Если вам удалось воспроизвести проблему, проголосуйте за проблему в Google Issue Tracker.
Эта проблема была решена с помощью Compose Version 1.7 (beta02).
Если вы соответствующим образом обновите свои зависимости, это будет работать.