我有一个
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()
)
}
}
}
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 = {
})
}
}
}
}