Просто определите конструкторы так:
я есть пользовательское представление, написанное на Kotlin с использованием JvmOverloads, которое может иметь значение по умолчанию.
class MyView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0,
defStyleRes: Int = 0
) : LinearLayout(context, attrs, defStyle, defStyleRes)
Все отлично работает в Android 5.1 и выше.
Однако, это терпит крах в 4.4, так как у конструктора в 4.4 нетdefStyleRes
, Как я мог это поддержать, что в 5.1 и выше я мог бы иметьdefStyleRes
но не в 4.4, без необходимости явно иметь 4 конструктора, определенных как мы сделали в Java?
Примечание: ниже будет хорошо работать в 4.4, но тогда мы потеряемdefStyleRes
.
class MyView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : LinearLayout(context, attrs, defStyle)