Jetpack Compose 中 background 参数类型不匹配怎么办?
数据小许
结论
问题出在 Color 的类型上。代码导入的是 android.graphics.Color,而 Modifier.background 接收的是 Compose 的 androidx.compose.ui.graphics.Color 或 Brush。因此,.background(backgroundColor) 找不到匹配的重载。
修正参数类型
移除 import android.graphics.Color,改为导入 Compose 的 Color:
import androidx.compose.ui.graphics.Color
ArticleInfoCard 的参数声明保持为:
@Composable
fun ArticleInfoCard(
text: String,
desc: String,
backgroundColor: Color,
modifier: Modifier = Modifier
) {
Column(
modifier = modifier
.fillMaxSize()
.background(backgroundColor)
.padding(16.dp),
// 其余内容保持不变
) {
// ...
}
}
这里的 Color 必须是 androidx.compose.ui.graphics.Color,才能匹配 background(color: Color, shape: Shape) 重载。
如果现有颜色是 Android 颜色整数
如果传入的是 android.graphics.Color.RED 这样的 Android 颜色整数,可以在调用时将其转换为 Compose Color:
val composeColor = androidx.compose.ui.graphics.Color(androidColorInt)
然后把 composeColor 传给 backgroundColor。如果颜色值已经是 Compose Color,直接传入即可。
备注:内容仅供参考。
