我有一个数据类,其中一个变量的类型是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()'
这意味着什么如何解决这一问题?请提供详细的解释与适当的参考。谢谢
3条答案
按热度按时间ssgvzors1#
另一个选项是传递Int或Long,而不是传递Compose Color,例如
然后在您的ui中
vx6bjr1n2#
正如我们所知,颜色是一种资源,我们可以在
colors.xml
和Color.kt
中保存,因此我们可以在这种情况下使用颜色 Package 器来存储传入的颜色,以便在需求发生变化时不会中断(某些视图可能是xml)。这基本上是 Package ,可以接受这两种类型的颜色,我们不想担心它来自哪里。它可以来自XML或Kotlin文件。
然后我们可以用这些颜色来构图。
这不是矫枉过正的解决方案,对我来说是一个愿景或最佳实践。顺便说一句,色雷斯人的回答更适合你的情况。我按照你的要求发布了这个。
lfapxunr3#
您需要为该值使用
@RawValue
注解。试着像这样修改textColor
: