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