В вашем представлении нет метода setLayoutMarginStart
или setLayoutMarginEnd
. Параметр app:attributeName
будет работать через отражение и искать эти методы.
Один из способов добиться этого - просто создать подкласс вашего View и написать свои собственные сеттеры.
fun setMarginTop(newMarginTop: Int) {
val lp = layoutParams as? ViewGroup.MarginLayoutParams ?: return
lp.run {
setMargins(leftMargin, newMarginTop, rightMargin, bottomMargin)
}
layoutParams = lp
}
Или, если вы используете kotlin-ktx:
fun setMarginTop(newMarginTop: Int) {
updateLayoutParams<ViewGroup.MarginLayoutParams> {
updateMargins(top = newMarginTop)
}
}