如何从文本按钮中删除填充?

How to remove padding from Text button?

我正在尝试从 TextButton 中删除填充,但它不起作用。

TextButton(
    onClick = {},
    modifier = Modifier.padding(0.dp)
) {
    Text(
        " ${getString(R.string.terms_and_conditions)}",
        color = MaterialTheme.colors.primary,
        fontFamily = FontFamily(Font(R.font.poppins_regular)),
        fontSize = 10.sp,
    )
}

我也尝试在 Modifier 属性 中设置 heightsize,但填充仍然存在

您不能使用 padding 修饰符减少填充:它总是在现有填充之上添加额外的填充。有关修饰符顺序的更多详细信息,请参阅

您可以通过指定 PaddingValues(0.dp) 使用 contentPadding 参数减少 TextButton 填充,但这不会完全删除填充。

如果您需要完全删除填充,可以使用 clickable 修饰符代替:

Text(
    "getString(R.string.terms_and_conditions",
    color = MaterialTheme.colors.primary,
    fontFamily = FontFamily(Font(R.font.neris_semi_bold)),
    fontSize = 10.sp,
    modifier = Modifier
        .clickable {
            // onClick()
        }
)

如果你想像TextButton那样改变波纹的颜色,你可以按如下方式进行:

.clickable(
    interactionSource = remember { MutableInteractionSource() },
    indication = rememberRipple(color = MaterialTheme.colors.primary),
) {
    
}

您可以通过更改 contentPadding 并应用固定大小来实现:

TextButton(
    onClick = {},
    contentPadding = PaddingValues(0.dp),
    modifier = Modifier.height(20.dp).width(40.dp)
) {
    Text(
        "Button",
        color = MaterialTheme.colors.primary,
        fontSize = 10.sp,
    )
}

CompositionLocalProvider 包裹 TextButton 以覆盖 LocalMinimumTouchTargetEnforcement 的值。这只会删除额外的边距,但不会修改硬编码的 defaultMinSize。

CompositionLocalProvider(
    LocalMinimumTouchTargetEnforcement provides false,
) {
    TextButton(
        onClick = {},
        contentPadding = PaddingValues(),
    ) {
        Text(
            "Button",
            color = MaterialTheme.colors.primary,
            fontSize = 10.sp,
        )
    }
}