如何防止 M3 Compose ModalBottomSheet 在抛出内部 LazyRow 内容时分离?

问题描述 投票:0回答:1

我有一个

ModalBottomSheet
,里面有一个
LazyColumn
,其中包含项目列表。当我快速向上或向下滚动(即快速滚动)内容时,底部的纸张会短暂地从底部或顶部分离(取决于滚动方向)。我想删除此行为,以便我的
LazyColumn
牢固地粘在底部和顶部(它是全屏底部工作表)。
有人知道如何实现这一目标吗? :)

我正在使用此依赖项中当前最新的底表:

ModalBottomSheet

它是这样的:

我删除了很多内容代码,但一般来说底页内容是这样的:

androidx.compose.material3:material3-android:1.2.0-alpha02

我尝试了一种人工智能建议的方法,即附加一个nestedScrollConnection,其中我调整了onPostFling行为以返回0速度,因此在向父级滑动后不会返回任何速度,但这没有帮助。这是 phind.com AI 建议的:

@Composable fun BottomSheetContent() { Column(modifier = modifier.fillMaxSize()) { Column( modifier = Modifier .fillMaxWidth() .padding(horizontal = 16.dp) .verticalScroll(rememberScrollState()) .weight(1f) ) { GenresSection( selectedGenres = selectedGenres, ) } ResetAllAndApplyFilterButtonsRow( modifier = Modifier .fillMaxWidth() .padding(vertical = 16.dp, horizontal = 16.dp) ) } } @Composable fun GenresSection( selectedGenres: List<Genre>, modifier: Modifier = Modifier, ) { LazyColumn( modifier = modifier.height(400.dp), ) { items(selectedGenres) { genre -> GenreChoiceRow( text = genre.name, modifier = Modifier.animateItemPlacement() ) } } }


android android-jetpack-compose bottom-sheet
1个回答
0
投票

val nestedScrollConnection = remember { object : NestedScrollConnection { override suspend fun onPostFling(consumed: Velocity, available: Velocity): Velocity { return super.onPostFling(consumed, Velocity.ZERO) } override suspend fun onPreFling(available: Velocity): Velocity { return super.onPreFling(available) } } } LazyColumn( modifier = Modifier.nestedScroll(nestedScrollConnection) ) { // Your scrollable content here }

重点是设置fling

LazyVerticalGrid(columns = GridCells.Fixed(2), flingBehavior = flingBehavior) { videoTempState.value.pagConfigBean?.videoTempList?.let { it -> items(it, key = { it?.uuid ?: "" }) { Box( modifier = Modifier .fillMaxWidth() .height(200.dp) ) { AndroidView(factory = { PAGView(it) }, update = { }) } } } }

© www.soinside.com 2019 - 2024. All rights reserved.