Pho*_*gBM 2 android android-jetpack-compose jetpack-compose-switch android-compose-switch
我有Row
两个组件,Text
和Switch
,添加后Switch
,我看到上面和下面的空间。我希望 的高度Switch
适合 UI 高度。
我使用padding(0.dp)
但它不起作用。
如何删除它?
这是我的代码:
Row(
modifier = Modifier
.fillMaxWidth()
.background(color = Color.Red),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
) {
Text(
text = "This is a text",
modifier = Modifier.background(color = Color.Yellow)
)
Switch(
checked = false,
onCheckedChange = {},
modifier = Modifier
.padding(0.dp)
.background(color = Color.Blue)
)
}
Run Code Online (Sandbox Code Playgroud)
与许多Switch
其他组件一样,为了可访问性,也有最小触摸目标尺寸( 48.dp
)。它与minimumInteractiveComponentSize
修饰符一起应用。它将在组件外部包含额外的空间,以确保它们可以访问。
您可以查看文档:
48.dp
如果元素尺寸较小,则 至少保留尺寸以消除触摸交互的歧义。https://m2.material.io/design/usability/accessibility.html#layout-and-typography这使用材料建议的最小尺寸
48.dp
x48.dp
,这可能与系统强制的最小尺寸不同。最小可点击/触摸目标尺寸(48.dp
默认情况下)由系统通过ViewConfiguration控制,并在触摸输入层自动扩展。
您可以覆盖false
应用于LocalMinimumInteractiveComponentEnforcement
. 如果设置为,false
则不会有多余的空间。
CompositionLocalProvider(LocalMinimumInteractiveComponentEnforcement provides false) {
Switch(
checked = switchState,
onCheckedChange = { switchState = !switchState },
modifier = Modifier
.padding(0.dp)
.background(color = Teal200)
)
}
Run Code Online (Sandbox Code Playgroud)
注意: LocalMinimumInteractiveComponentEnforcement
至少需要M21.4.0-alpha04
和M3 1.1.0-alpha04
。之前就可以用LocalMinimumTouchTargetEnforcement
同样的方法使用了。
归档时间: |
|
查看次数: |
1114 次 |
最近记录: |