Es ist ganz einfach, alles was du tun musst, ist super.onMeasure
aufzurufen, nachdem du die genauen Abmessungen deiner Ansicht berechnet hast.
class ProportionalConstraintLayout @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
val exactWidth = 100 //etwas tun, um die Breite der Ansicht zu berechnen
val exactHeight = 100 //etwas tun, um die Höhe der Ansicht zu berechnen
setMeasuredDimension(exactWidth, exactHeight)
super.onMeasure(
MeasureSpec.makeMeasureSpec(exactWidth, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(exactHeight, MeasureSpec.EXACTLY)
)
}
}