我在 androidx.compose.ui.layout.SubcomposeLayout.kt
的 androidx.compose.ui:ui:1.0.0-beta02
的源代码中看到了这个函数。
private fun createMeasurePolicy(
block: SubcomposeMeasureScope.(Constraints) -> MeasureResult
): MeasurePolicy = object : LayoutNode.NoIntrinsicsMeasurePolicy(
error = "Intrinsic measurements are not currently supported by SubcomposeLayout"
) {
...
}
当组合项将在子组合项中呈现时,我似乎无法使用内在测量。
作为参考,我正在尝试在 ModalBottomSheet 中使用这样的视图。目的是在工作表中有一个可滚动的视图,并且始终在底部有一个粘性视图(如按钮)。我希望可滚动内容仅占用所需的空间,并且在工作表展开状态下并不总是全屏显示,weight(1f)
确实如此。
Column(
modifier = Modifier
.height(IntrinsicSize.Min)
.wrapContentHeight(Alignment.Bottom),
verticalArrangement = Arrangement.Bottom
) {
Column(
content = sheetContent,
modifier = Modifier
.weight(1f)
.wrapContentHeight(Alignment.Bottom)
)
Box {
bottomStickyContent?.let { it() }
}
}
答案 0 :(得分:0)
听起来答案是否定的,SubcomposeLayout
不会很快获得内在支持(如果有的话)。
我通过代码更新以使用约束布局解决了这个问题。
ConstraintLayout {
val (sticky, column) = createRefs()
Column(
content = sheetContent,
modifier = Modifier
.constrainAs(column) {
top.linkTo(parent.top)
bottom.linkTo(sticky.top)
height = Dimension.preferredWrapContent
}
.wrapContentHeight(Alignment.Bottom)
)
Box(
modifier = Modifier
.constrainAs(sticky) {
bottom.linkTo(parent.bottom)
}
) {
bottomStickyContent?.let { it() }
}
}