Jetpack Compose嵌入View页面出现滚动冲突
Android滑动冲突解决方案摘要 在Android项目开发中,当BottomSheetDialog内嵌Compose的LazyColumn组件时,出现了滑动冲突问题。解决方案是通过NestedScrollInterop实现手动管理滚动冲突:在调用方设置ComposeView时创建nestedScrollInteropConnection,并将该连接传递给LazyColumn组件;在组件方使用.n
·
一、背景
在开发Android老项目过程中,使用compose的view进行嵌入,发现在滚动的很多页面中,出现滑动冲突的问题,于是需要进行冲突的手动管理。项目中,外部使用的是Android原生BottomSheetDialog,此组件可以进行下滑关闭的行为,但是在BottomSheetDialog的内部添加了Compose的LazyColumn组件,两个滑动出现了冲突。
二、解决方案
调用方修改
ComposeView(requireContext()).apply {
setContent {
val nestedScrollInterop = rememberNestedScrollInteropConnection()
QuotationMain(
viewModel = viewModel,
nestedScrollInterop = nestedScrollInterop
)
}
}
组件方使用
fun QuotationMain(
modifier: Modifier = Modifier,
viewModel: QuotationViewModel?,
nestedScrollInterop: NestedScrollConnection
) {
LazyColumn(
modifier = Modifier
.padding(top = 48.dp, bottom = 84.dp)
.nestedScroll(nestedScrollInterop)
) {
item{}
item{}
}
}
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)