我有数据类,一个变量是
Color
的类型。我有逻辑来存储不同类型的颜色以在 UI 中显示,即
data class SubTitleModel(
val text: String,
val textColor: Color = Color.Black
)
当我从一项活动转到另一项活动时,我必须使用
@Parcelize
即
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
data class SubTitleModel(
val text: String,
val textColor: Color = Color.Black
) : Parcelable
它给我错误
Color
Type is not directly supported by 'Parcelize'. Annotate the parameter type with '@RawValue' if you want it to be serialized using 'writeValue()'
那是什么意思?如何解决这个问题呢?请提供详细的解释和适当的参考。谢谢
另一种选择是传递 Int 或 Long 而不是传递 Compose Color 例如
data class SubTitleModel(
val text: String,
val textColor: Int = (0xFF000000).toInt()
)
然后在你的用户界面中
@Preview
@Composable
private fun Test() {
val modelList = listOf(
SubTitleModel(
text = "SomeText"
),
SubTitleModel(
text = "SomeText2",
textColor = Color.Red.toArgb()
),
SubTitleModel(
text = "SomeText3",
textColor = Color.Green.toArgb()
)
)
Column(
modifier = Modifier
.fillMaxSize()
.padding(20.dp)
.border(2.dp, Color.Red)
) {
modelList.forEach { model: SubTitleModel ->
Text(text = model.text, color = Color(model.textColor))
}
}
}
您需要为该值使用
@RawValue
注释。
尝试像这样修改textColor
:
val textColor: @RawValue Color = Color.Black