Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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 具有默认样式的自定义复选框_Android_Kotlin_Checkbox_Material Design_Android Custom View - Fatal编程技术网

Android 具有默认样式的自定义复选框

Android 具有默认样式的自定义复选框,android,kotlin,checkbox,material-design,android-custom-view,Android,Kotlin,Checkbox,Material Design,Android Custom View,我需要创建一个带有默认材质样式的自定义复选框 我的班级是这样定义的 class CustomCheckBox @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : CheckBox(context, attrs, defStyleAttr) { } 如果我查看默认复选框的属性,它们定义了以下属性 background: @a

我需要创建一个带有默认材质样式的自定义复选框

我的班级是这样定义的

class CustomCheckBox @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : CheckBox(context, attrs, defStyleAttr) {

}
如果我查看默认复选框的属性,它们定义了以下属性

background: @android:drawable/control_background_40pd_material
button: @android:drawable/btn_check_material_anim
但是派生小部件没有它们

如何将这些应用于派生类

更新

我试图扩展
MaterialCheckBox
,默认属性现在显示在面板中,但它给出了一个例外

IllegalArgumentException: The style on this component requires your app 
theme to be Theme.MaterialComponents (or a descendant)

我没有使用
材质
主题,因此如何将默认背景和按钮可绘制应用于自定义类?

事实证明,
@JvmOverloads
是问题的根源,如中所述

我把它换成了

constructor(context: Context?) : super(context)
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)

现在它按预期工作。

您是否尝试从AppCompatCheckbox或材质库中的复选框扩展?我提到的默认复选框在布局中定义为
。我还尝试扩展
AppCompatCheckbox
MaterialCheckBox
但没有任何更改。我刚刚尝试清理项目并再次从
MaterialCheckBox
扩展,现在它确实设置了默认属性,但现在显示了一个错误。见问题中的Udate