我为我的ModalBottomSheetLayout
使用两个状态:HalfExpanded
和Expanded
。
val sheetState = rememberModalBottomSheetState(
initialValue = if (isFullScreen) {
ModalBottomSheetValue.Expanded
} else {
ModalBottomSheetValue.HalfExpanded
}
)
ModalBottomSheetLayout(
sheetState = sheetState,
sheetContent = {
Spacer(modifier = Modifier.height(1.dp))
content()
},
modifier = modifier,
content = {}
)
我的问题是HalfExpanded
状态正好占据了屏幕的一半,但我需要70%的屏幕。有没有办法在HalfExpanded
状态下强制ModalBottomSheetLayout
显示70%的屏幕?
2条答案
按热度按时间ryevplcw1#
将initialValue设置为ModalBottomSheetValue。
保留一个sizeRatio变量,该变量将被分配给修改器以在70%和全屏(100%)之间进行交换
将sheetContent Package 在Column中,并设置Modifier.fillMaxHeight(sizeRatio)
如果你想显示抽屉使用在70%的覆盖率
如果您希望抽屉在全屏重置回1f
根据需求分配sizeRatio
在ModalSheetLayout的修饰符中,可以使用此方法检测从here获得的向上滑动
更新整个刷卡手势
sheetContent中有两个嵌套Columns的原因是,只有在拖动内部内容时才会调用detectDragGestures
结果为
hiz5n14c2#
我最终想到的解决方案是使用
Modifier.swipeable
来处理ModalBottomSheetLayout
内容。用法:
你还需要定义这些变量: