In der Android-Dokumentation heißt es, dass es zwei Größen für eine Ansicht gibt, die gemessenen Abmessungen und die Zeichnungsabmessungen . Die gemessene Dimension ist die, in der berechneten Maßübergabe (die onMeasure Methode), während die Zeichnungsbemaßungen die tatsächliche Größe auf dem Bildschirm sind. Insbesondere heißt es in der Dokumentation:
Diese Werte können, müssen aber nicht von der gemessenen Breite und Höhe abweichen.
Meine Frage lautet also: Was könnte dazu führen, dass sich das Zeichnungsmaß von dem gemessenen Maß unterscheidet? Wenn die onMeasure (int, int) -Methode die Layoutanforderungen ( angegeben als Parameter widthMeasureSpec und heightMeasureSpec) berücksichtigt , wie kann das SDK entscheiden, dass die Ansicht eine andere Zeichnungsgröße haben soll?
Wie / wo im Android-Quellcode wird außerdem die gemessene Breite / Höhe verwendet, um die Breite / Höhe der Zeichnung zu berechnen? Ich habe versucht, in den Quellcode von View zu schauen , kann aber nicht herausfinden, wie die gemessene Breite / Höhe zur Berechnung der endgültigen Breite / Höhe verwendet wird. Vielleicht hat es etwas mit der Polsterung zu tun, aber ich bin mir nicht sicher.
quelle
Antworten:
Wie der Name schon sagt, wird die gemessene Breite / Höhe während der Mess- und Layoutphase verwendet.
Lassen Sie mich ein Beispiel geben,
Ein Widget wird gebeten, sich selbst zu messen. Das Widget gibt an, dass es 200 x 200 Pixel groß sein soll. Dies wird mit Breite / Höhe gemessen.
Während der Layoutphase, dh in der onLayout-Methode. Die Methode kann die gemessene Breite / Höhe ihrer untergeordneten Elemente verwenden oder eine neue Breite / Höhe zuweisen, indem sie die Layoutmethode der Ansicht aufruft.
Angenommen, die onLayout-Methode ruft childview.layout (0,0,150,150) auf. Jetzt unterscheidet sich die Breite / Höhe der Ansicht von der gemessenen Breite / Höhe.
Ich würde empfehlen, die gemessene Breite / Höhe außerhalb der onLayout-Methode nicht zu verwenden.
zusammenfassen .
zusätzlich wahl
public void View.layout(int l, int t, int r, int b)
scheint Ort zu sein , wo die Zuordnung der Position und der Größe geschieht.
quelle