gpt4 book ai didi

android - 修改器取决于 Jetpack Compose 中其他修改器的值?

转载 作者:行者123 更新时间:2023-12-05 00:18:10 25 4
gpt4 key购买 nike

如何创建依赖于其他一些修饰符值的新修饰符?举例来说,我想让子组件的高度为从父组件传入的高度的一半加上一些常数(因此无法使用 fillMaxHeight(fraction: Float))。

@Composable
fun View() {
MyComposable(modifier = Modifier.size(40.dp))
}

@Composable
fun MyComposable(
modifier: Modifier // Assuming this modifier contains a size
) {
Box(modifier) { // Setting the the size from the passed in modifier
val childHeightModifier = Modifier.height(???) // <-- Wanted to be some specific value depending on parent size

Box(childHeightModifier) {
...
}
}
}

最佳答案

您可以使用 BoxWithConstraints对于这个特定的用例,它提供了父级对其子级施加的约束:

@Composable
fun View() {
MyComposable(modifier = Modifier.size(40.dp))
}

@Composable
fun MyComposable(modifier: Modifier) {
BoxWithConstraints(modifier) { // this: BoxWithConstraintsScope
val childHeightModifier = Modifier.height(maxHeight * 0.5f)
Box(childHeightModifier) {
...
}
}
}
至于 Modifier之间的通讯s,有一个 ModifierLocal系统 in the works ,这将允许这样做。

关于android - 修改器取决于 Jetpack Compose 中其他修改器的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69294900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com