如何让父Layout-Box在Jetpack中包装其内容? 下面的当前实现填满了整个屏幕,我只想让Box环绕它的子对象Switch.我如何定义Box人中的wrap content人?

@Composable
fun TestScreen(modifier: Modifier = Modifier) {
    Box(modifier = Modifier.background(Color.Yellow)){
        val switchState = remember { mutableStateOf(true) }
        Switch(
            checked = switchState.value,
            enabled= true,
            onCheckedChange = { switchState.value = it }
        )
    }
}

A Switch inside a Box

推荐答案

你在屏幕上看到的不是关于Modifier.wrapContentSize的.Modifier.wrapContentSize,并且没有大小修改器,则返回相同的约束.你可以查看这个答案的Constraints部分.

为什么您的长方体覆盖整个屏幕可能是更狡猾的事情,因为您有一个将Modifier.fulMaxSize()作为TestScreen的直接父对象的Surface.

Surface是一个带有propagateMinConstraints: Boolean = true的长方体,它将最小的宽度和高度强加给它的直接后代.This answer用例子解释了它是如何工作的.

当Parent不是如上所述的曲面时,您的Composable实际上是这样的.

Surface(
    modifier = Modifier.fillMaxSize()
) {
    Column(
        modifier = Modifier
            .fillMaxSize()
            .padding(10.dp)
    ) {
        TestScreen()
    }
}

enter image description here

Android相关问答推荐

如何检测HitTest是否命中给定的网格对象?

NativeScript在`ns run android`上重复Kotlin类

Android Kotlin ImageView内置于Kotlin ImageView中.适配器未按预期更新

如何在Jetpack Compose中向SearchBar添加边框

我需要在房间数据库中保留旧的自动迁移行吗?

使用不同的gradle文件导入外部库

当 EditText 用于在 android studio 中将字符串发送到 firebase 时,仅允许安全调用错误

为一组闪烁的可组合项制作动画,控制同步/定时

Jetpack Compose 中带有权重的行和 AnimatedVisibility 会 destruct UI

如何用jetpack compose实现垂直李克特量表

未找到 com.android.tools.build:gradle:7.4.0 的匹配变体

服务似乎在启动时忽略传递的变量

在 Jetpack Compose 中自动滚动后面的项目

Jetpack Compose Arc 进度条动画(如何重启动画)

没有互联网连接时,Firebase Storage putFile() 永远不会完成

调用时 listFiles() nullpointerexception

如何使用文件提供程序将视频从一个应用程序共享到另一个应用程序?

如何将新的 ComponentActivity 与 ViewBinding 和其他旧的 AppCompatActivity 组件一起使用

如何在 Kotlin 的片段中制作图像列表?

单独窗口中的 Android Studio 模拟器