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

问题描述 投票:0回答:1

我需要使用默认的材质样式创建自定义CheckBox。

我的班级定义如下

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

}

如果我查看默认CheckBox的属性,则它们定义了以下属性

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)

我没有使用Material主题,那么如何使默认背景和按钮可绘制应用于自定义类?

我需要使用默认的材质样式创建自定义CheckBox。我的类像这样定义,所以类CustomCheckBox @JvmOverloads构造函数(context:Context,attrs:AttributeSet?= null,...

android kotlin checkbox material-design android-custom-view
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.