15 Stimmen

Beispiel für benutzerdefinierte ViewGroup?

Ich habe hier auf SO, bei Google, in den Android-Dokumenten gesucht...

Aber ich kann keinen einzigen Code-Schnipsel mit einem Beispiel für eine benutzerdefinierte ViewGroup finden, höchstens einige vage Erklärungen...

Kann jemand einen bereitstellen? Wie erstellt man eine ViewGroup, in der man ihre Kinder platzieren kann, wo man möchte?

14voto

slund Punkte 6217

Ich denke, das einfachste Beispiel, das man sich anschauen kann, ist der Quellcode für AbsoluteLayout.Java

https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/AbsoluteLayout.java

Sie müssen onMeasure überschreiben, um die Kinder zu messen, und onLayout, um sie zu positionieren.

Ich habe auch wesentlich komplizierteren ViewGroup-Code, den ich teilen kann, wenn Sie möchten.

0voto

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)
        )

    }

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X