【发布时间】:2020-02-19 08:03:57
【问题描述】:
根据材质规范https://material.io/develop/android/components/material-card-view/colorSurface应用于卡片的背景色。
当我们像这样在 xml 中指定卡片时,这有效
<com.google.android.material.card.MaterialCardView
android:layout_width="100dp"
android:layout_height="100dp"></com.google.android.material.card.MaterialCardView>
当我运行它时,我可以看到颜色表面正确地应用于上述卡片。
如果我以编程方式制作卡片,这也有效
addView(MaterialCardView(this).apply {
layoutParams = ViewGroup.LayoutParams(300,300)
})
但是,一旦我从 MaterialCardView 扩展以制作我自己的自定义视图,似乎与此的主题连接就丢失了。不应用颜色表面而是卡片默认为白色
class CustomView @JvmOverloads constructor(
context: Context?,
attributeSet: AttributeSet? = null,
defStyleAttr: Int = 0
) : MaterialCardView(context, attributeSet, defStyleAttr){
}
<com.seed.formviewactivity.CustomView
android:layout_width="100dp"
android:layout_height="100dp"></com.seed.formviewactivity.CustomView>
我的 CustomView 现在没有应用 colorSurface。
这是一个已知问题吗?
【问题讨论】:
-
尝试使用
R.attr.materialCardViewStyle作为默认值defStyleAttr而不是0。 -
解决了。将其发布为答案
标签: android material-design android-cardview material-components-android material-components