如何去除IconButton中的填充?我希望列中的项目具有相同的起始填充。

Column(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp)
) {
IconButton(onClick = { }) {
Icon(asset = Icons.Filled.Search)
}
Text("Some text")
} 发布于 2020-10-06 09:26:03
这个空间是由可访问性、触摸目标和默认的48.dp大小造成的。
从1.2.0开始,更改默认行为和删除额外空间的最佳方法是禁用LocalMinimumTouchTargetEnforcement并应用size修饰符:
CompositionLocalProvider(LocalMinimumTouchTargetEnforcement provides false) {
IconButton(
modifier = Modifier.size(24.dp),
onClick = { }
) {
Icon(
Icons.Filled.Search,
"contentDescription",
)
}
}注意,因为这样,如果组件放置在布局的边缘附近/靠近另一个组件而没有任何填充,那么就不会有足够的空间用于可访问的触摸目标。
对于IconButton,IconButtonSizeModifier = Modifier.size(48.dp).使用内部修饰符:IconButtonSizeModifier = Modifier.size(48.dp).应用默认大小
您可以使用以下内容来修改它:
IconButton(modifier = Modifier.
then(Modifier.size(24.dp)),
onClick = { }) {
Icon(
Icons.Filled.Search,
"contentDescription",
tint = Color.White)
}使用size按正确的顺序应用是很重要的。

发布于 2021-11-19 07:01:16
将IconButton包装为CompositionLocalProvider,以覆盖LocalMinimumTouchTargetEnforcement的值,该值强制执行48.dp的最小触摸目标。
CompositionLocalProvider(
LocalMinimumTouchTargetEnforcement provides false,
) {
IconButton(onClick = { }) {
Icon(
imageVector = Icons.Filled.Search,
contentDescription = "Search",
)
}
}发布于 2022-07-26 15:06:18
如果您只使用IconButton来处理单击侦听器,而不是:
IconButton(onClick = { // Todo -> handle click }) {
Icon(asset = Icons.Filled.Search)
}您可以使用:
Icon(
asset = Icons.Filled.Search,
modifier = Modifier.clickable { // Todo -> handle click },
)这样你就不需要移除多余的垫子了。
https://stackoverflow.com/questions/64222754
复制相似问题