Пользовательский флажок со стилем по умолчанию - PullRequest
0 голосов
/ 12 февраля 2020

Мне нужно создать пользовательский 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, так как я могу Сделать фон по умолчанию и кнопку, которую можно нарисовать, применить к пользовательскому классу?

1 Ответ

0 голосов
/ 12 февраля 2020

Оказывается, @JvmOverloads - это root проблемы, как описано в этом посте

Я заменил ее на

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

и теперь работает как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...