我知道我可以利用Modifier.fillMaxHeight(0.8f)
80%的可用高度。
但是,我希望有一个修饰符可以包裹内容高度,但不超过可用高度的 80%。因此,如果内容仅覆盖可用高度的 40%,那就没问题。如果它覆盖 90%,我只想要 80%。有什么方法可以编写这样的修饰符吗?
我知道我可以利用Modifier.fillMaxHeight(0.8f)
80%的可用高度。
但是,我希望有一个修饰符可以包裹内容高度,但不超过可用高度的 80%。因此,如果内容仅覆盖可用高度的 40%,那就没问题。如果它覆盖 90%,我只想要 80%。有什么方法可以编写这样的修饰符吗?
您可以使用
layout
修饰符,它允许您更改包装元素的测量和布局方式。虽然fillMaxHeight
将Constraints.minHeight
和设置Constraints.maxHeight
为等于 乘以Constraints.maxHeight
,fraction
但您只想对 和 执行此操作,maxHeight
而不是minHeight
。使用layout
,您可以做到这一点:您可以轻松地将其提取为具有参数
Modifier
的可重复使用的扩展函数fraction
。是的,您可以在 Jetpack Compose 中编写一个 Modifier 来实现所需的行为。要包裹内容高度但将其限制为最大可用高度的 80%,您可以使用 Modifier.heightIn() 函数以及 LocalDensity 和 BoxWithConstraints 提供的动态值。
虽然我不知道修饰符可以做到这一点,但您可以使用
Column
,weights
但设置fill
为false
:我已经创建了一个预览,以便您可以轻松地测试它: