it-swarm.com.de

Android: Wie erhält man die Höhe und Breite einer benutzerdefinierten Ansicht?

Mögliches Duplikat:
Größe einer Android Ansicht basierend auf den Abmessungen der Eltern

wie verwende ich getMeasuredWidth() und getMeasuredHeight? Es wird immer 0 zurückgegeben. Was ist der Unterschied zwischen diesem und getHeight() und getWidth()?

65

Wir haben gerade eine Lösung gefunden, mit der Sie die Höhe und Breite einer benutzerdefinierten Ansicht ermitteln können:

@Override
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){
    super.onSizeChanged(xNew, yNew, xOld, yOld);

    viewWidth = xNew;
    viewHeight = yNew;
}

Es funktioniert in meinem Fall.

61
Paresh Mayani

Entschuldigung, diese Frage wurde bereits gestellt. Ich habe die Antwort hier gefunden - Wie wird die Größe einer Android Ansicht basierend auf den Abmessungen der Eltern

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
    int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
    this.setMeasuredDimension(parentWidth, parentHeight);
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
54

Versuchen Sie nicht, sie in den Konstruktor zu bekommen. Versuchen Sie, sie in der onDraw() -Methode aufzurufen.

13
Mozz

Mit der folgenden Methode können Sie die Breite und Höhe der Ansicht ermitteln. Beispiel:

int height = yourView.getLayoutParams().height;
int width = yourView.getLayoutParams().width;

Dies gibt den konvertierten Wert der Ansicht an, der im XML-Layout angegeben ist.

Wenn der angegebene Wert für height in XML 53 dpi beträgt, erhalten Sie den konvertierten Wert in Ganzzahl als 80.

12
Sam

Ich habe mich auch lange um getMeasuredWidth() und getMeasuredHeight()getHeight() und getWidth() verlaufen .......... später fand ich onSizeChanged() Methode WIRKLICH hilfreich.

Neuer Blog-Beitrag: Wie bekommt man die Breite und Höhe einer benutzerdefinierten Ansicht (erweitert die Ansicht) in Android http://syedrakibalhasan.blogspot.com/2011/02/how-to -get-width-and-height-dimensions.html

9
Rakib

Der Unterschied zwischen getHeight() und getMeasuredHeight() besteht darin, dass die erste Methode die tatsächliche Höhe von View und die zweite Methode die Gesamthöhe von View zurückgibt . In anderen Worten, getHeight() gibt die Ansichtshöhe zurück, getMeasuredHeight() gibt die Höhe zurück, die diese Ansicht benötigt, um alle ihre Elemente anzuzeigen

6
OFFmind

Nun, Höhe wird größer und Breite wird größer. Aber Sie rufen diese Methoden zu früh auf. Wenn Sie sie in oncreate oder onresume aufrufen, ist die Ansicht noch nicht gezeichnet. Sie müssen es aufrufen, nachdem die Ansicht gezeichnet wurde.

1
Falmarri