我正在try 在Jetpack Compose中创建一行两个按钮,我希望每个按钮都包装自己的内容,即文本"Hello".我通过在每个按钮上使用.defaultMinSize()修饰符实现了这一点.然而,我很难让行环绕它的内容,这是两个按钮.我已经在Row Composable上使用了.wrapContentSize()修饰符,但行的高度并没有根据按钮的高度进行调整,如图所示.

Row(
        horizontalArrangement = Arrangement.SpaceEvenly,
        verticalAlignment = Alignment.CenterVertically,
        modifier = Modifier
            .wrapContentSize()
            .background(LightGrey)
    ) {
        Button(
            modifier = Modifier
                .defaultMinSize(minWidth = 1.dp, minHeight = 1.dp)
            ,
            onClick = { /*TODO*/ },
            contentPadding = PaddingValues(0.dp)
        ) {
            Text(
                text = "HELLO",
            )
        }
        Button(
            modifier = Modifier
                .defaultMinSize(minWidth = 1.dp, minHeight = 1.dp)
            ,
            onClick = { /*TODO*/ },
            contentPadding = PaddingValues(0.dp)
        ) {
            Text(
                text = "HELLO",
            )
        }
    }

enter image description here

推荐答案

这要归功于accessibility. 视觉尺寸低于辅助功能最小touch 目标尺寸(例如Button)的material 构件将在构件外部包含额外空间,以确保它们可访问.

如果你想移除它,你必须强制100false

    Row(
        modifier = Modifier
            .background(Gray)
    ) {
        CompositionLocalProvider(LocalMinimumInteractiveComponentEnforcement provides false) {
            Button()
            Button()
        }
    }

enter image description here

Note: LocalMinimumInteractiveComponentEnforcement至少需要 M2 1.4.0-alpha04和M3 1.1.0-alpha04.然后你才能以同样的方式使用103.

Android相关问答推荐

在Kotlin Jetpack Compose中点击按钮后启动另一个Android应用程序

无法将项目添加到文件室数据库

Android Studio中的Kotlin版本不兼容错误:需要元数据1.9.0,但找到1.6.0

有人能帮我在应用程序上使用模拟位置时避免被发现吗?我已经反编译并粘贴了一个代码,S小文件

在Android Studio中,如何在BuildSrc Dependenices Kotlin文件中指定时标记与旧版本的依赖关系

在Android 14/SDK 34中使用RegisterReceiver的正确方式是什么?

Kotlin为多个控件设置一个侦听器

如何防止在Android Studio中设置kotlin断点时优化变量

我无法连接到信号机

如何使用 Wea​​r OS 上的运行状况服务模拟位置?

我如何比较多个时间范围并在 Android Compose 中并排显示它们

如何在Android中使用嵌套的Recyclerview

运行设备选项卡在 Android Studio 中自动打开

Kotlin Multiplatform Mobile targetSdk 已弃用

是否可以在 Kotlin 中为 mutableStateOf() 设置自定义设置器

如何在 react native 应用程序中显示复选框?当它在 android 模拟器中可见时

并行运行两个挂起函数并在第一个返回时返回

如何删除 Ktor 客户端 2.0.0 的默认标头

升级到 android studio 花栗鼠后,应用程序未安装在模拟器中

dagger2 抛出错误:如果没有 @Provides-annotated 方法就无法提供.在我的 android 项目的构建中