android - Jetpack Compose 中轮廓按钮的透明背景

标签 android android-jetpack-compose

我想创建只有文本和图标且所有背景和边框都是透明的按钮。我创造了这样的东西:

OutlinedButton(
    colors = ButtonDefaults.buttonColors(backgroundColor = Color.Transparent),
    border = BorderStroke(0.dp, Color.Transparent),
    modifier = modifier,
    onClick = onClick
) {
    icon?.invoke()
    Text(
        text = value,
        fontSize = 12.sp
    )
}
一切都很好,但我失去了默认颜色(应该是蓝色,我有黑色图标和文字)。如何从按钮中删除所有背景和边框但仍然有主题颜色?

最佳答案

你能试试这个吗?

@Composable
fun TiledButton(
    onClick: () -> Unit,
    @DrawableRes backgroundDrawableId: Int,
    modifier: Modifier = Modifier,
    enabled: Boolean = true,
    shape: Shape = MaterialTheme.shapes.small,
    border: BorderStroke? = null,
    contentColor: Color = MaterialTheme.colors.primary,
    contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
    content: @Composable RowScope.() -> Unit
) {
    Button(
        onClick = onClick,
        contentPadding = PaddingValues(0.dp),
        enabled = enabled,
        shape = shape,
        border = border,
        elevation = null,
        colors = ButtonDefaults.buttonColors(
            backgroundColor = Color.Transparent,
            contentColor = contentColor,
            disabledBackgroundColor = Color.Transparent,
            disabledContentColor = contentColor.copy(alpha = ContentAlpha.disabled),
        ),
        modifier = modifier
    ) {
        Box(
            contentAlignment = Alignment.Center,
        ) {
            TileAndroidImage(
                drawableId = backgroundDrawableId,
                contentDescription = "...",
                modifier = Modifier.matchParentSize()
            )
            Row(
                horizontalArrangement = Arrangement.Center,
                verticalAlignment = Alignment.CenterVertically,
                modifier = Modifier.padding(contentPadding),
                content = content,
            )
        }
    }
}
TiledButton(
    onClick = {  },
    backgroundDrawableId = R.drawable.tile,
    border = BorderStroke(1.dp, Color.Blue),
) {
    Text("Button")
}

关于android - Jetpack Compose 中轮廓按钮的透明背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70211892/

相关文章:

android - Webview 发布后不显示 url

android-jetpack-compose - `MutableTransitionState` 有什么用?看起来 mutableStateOf 尽其所能同样出色

android - 如何实现惰性列一次滚动一列的功能

android - 如何使用 ConstraintLayout 链接两个文本

Android TextInputLayout 遗留样式

java - 将 ImageView 中的图像缩放至完整尺寸

java - AsyncTask 中的某些内容阻塞了 UI - 导致界面短暂停止

android - 如何在关闭键盘时清除 TextField 焦点并防止在 Jetpack Compose 中退出应用程序所需的两次后按?

android - 用于文本选择的 float 工具栏 Jetpack Compose

Android Studio 无法解析方法 requestLocationUpdates FusedLocationProviderAPI