我有一个BottomDialog片段,它只包含Composable(行(标题)和LazyColumn)。我遇到的第一个问题是,当你向下滚动列表,然后你试图向上滚动列表时,列表不会滚动,对话框开始最小化。这个问题可以通过以下方法解决
modifier = Modifier.nestedScroll(rememberNestedScrollInteropConnection())
但是现在用户不能最小化一个对话框,当他试图通过触摸一个标题来做的时候。这就是我的问题,如何解决这个问题?
最小可复制代码
在创建这个例子的过程中,我发现我可以在触摸标题时最大化对话框,我也可以用手指开始移动动作到顶部(开始扩展它),然后将手指移动到屏幕底部,这样对话框将被关闭,但仍然不能以一种简单的方式最小化它。
ComposeView(requireContext()).apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
Theme {
Column(modifier = Modifier.nestedScroll(rememberNestedScrollInteropConnection())) {
Row {
Text(
modifier = Modifier
.padding(16.dp)
.fillMaxWidth(),
text = "Title"
)
}
LazyColumn(
Modifier
.weight(1f)
.fillMaxWidth()
) {
items(100) {
Text(
text = "Item $it",
modifier = Modifier
.padding(16.dp)
.fillMaxWidth(),
)
}
}
}
}
}
}
请不要建议使用BottomSheetScaffold。因为我想创建一个标准化的底部对话框。要使用它,我只需要传递一个项目列表和一个用于一个项目的合成函数。IMO BottomSheetScaffold根本不应该发布,因为它的设计“不好”。想象一下,在Jetpack合成之前,你围绕底部对话框编写代码,很好的分层。不。
1条答案
按热度按时间cbjzeqam1#
作为一个临时决定。我只是认为LazyColumn工作正常,所以我需要将我的标头 Package 到LazyColumn中。
所以我创建了这个函数。只要把任何可组合的