Jetpack Compose新版如何去除复选框周围的默认填充。

14
在Jetpack Compose的新更新中,根据官方文档所说,可触控区域周围将提供默认填充空间。 请参考这个链接 请问如何避免这种情况并实现“将LocalMinimumTouchTargetEnforcement设置为false”,以及在哪里进行此操作?

无障碍性非常重要。为什么应该避免它? - Gabriele Mariotti
4个回答

29
您需要使用 CompositionLocalProvider 来提供它。
CompositionLocalProvider(LocalMinimumInteractiveComponentEnforcement provides false) {
    Checkbox(
        checked = checked,
        onCheckedChange = {
            checked = it
        }
    )
}

对于LocalMinimumTouchTargetEnforcement:此材料API是实验性的,可能会在未来更改或删除。 - Misha Akopov
@Thracian 嘿,你这是从哪里得到的?能分享一下这个文档吗? - caffmaniac

4

请尝试以下步骤:

Checkbox(modifier = Modifier.absoluteOffset((-12).dp, 0.dp))

2
-12 是硬编码的。没有人知道默认填充方式将来会如何改变。 - Misha Akopov

4

关于Material 3,与 Thracian's answer(感谢您为我指明方向!)相当的解决方案如下:

CompositionLocalProvider(LocalMinimumInteractiveComponentEnforcement provides false) {
   Checkbox(
       checked = checked,
       onCheckedChange = {
           checked = it
       }
   )
}

0
你可以设置 Modifier.size(20.dp)。
20.dp 是没有填充的复选框大小。 通过这个固定大小,涟漪效果仍然存在且看起来很好。
Checkbox(
    modifier = Modifier.size(20.dp),
    checked = checkBoxState,
    onCheckedChange = { isChecked ->
        checkBoxState = isChecked
    })

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接