Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 扩展MaterialCardView不需要';不要应用主题_Android_Material Design_Android Cardview_Material Components Android_Material Components - Fatal编程技术网

Android 扩展MaterialCardView不需要';不要应用主题

Android 扩展MaterialCardView不需要';不要应用主题,android,material-design,android-cardview,material-components-android,material-components,Android,Material Design,Android Cardview,Material Components Android,Material Components,根据材料规格,颜色表面应用于卡的背景色 当我们像这样在xml中指定卡片时,这就起作用了 <com.google.android.material.card.MaterialCardView android:layout_width="100dp" android:layout_height="100dp"></com.google.android.material.card.MaterialCardView> 然而,一旦我从MaterialCardVie

根据材料规格,颜色表面应用于卡的背景色

当我们像这样在xml中指定卡片时,这就起作用了

<com.google.android.material.card.MaterialCardView
    android:layout_width="100dp"
    android:layout_height="100dp"></com.google.android.material.card.MaterialCardView>
然而,一旦我从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>
class CustomView@JVM重载构造函数(
上下文:上下文?,
属性集:属性集?=空,
defStyleAttr:Int=0
):MaterialCardView(上下文、属性集、defStyleAttr){
}
我的CustomView现在没有应用colorSurface


这是一个已知问题吗?

在构造函数中,您使用的是
defstylettr:Int=0

您应该将
R.attr.materialCardViewStyle
应用为默认值,而不是
0

这样,您的自定义CardView将使用应用程序主题中通过
materialCardViewStyle
属性定义的样式

材质组件库提供的默认值为:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
  <!-- ... -->
  <item name="materialCardViewStyle">@style/Widget.MaterialComponents.CardView</item>
</style>

@style/Widget.MaterialComponents.CardView

尝试使用
R.attr.materialCardViewStyle
作为
defStyleAttr
的默认值,而不是0。这就解决了问题。把它作为答案贴出来
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
  <!-- ... -->
  <item name="materialCardViewStyle">@style/Widget.MaterialComponents.CardView</item>
</style>