web-dev-qa-db-fra.com

Android: Comment obtenir la hauteur et la largeur d'une vue personnalisée?

Duplicate possible:
Comment dimensionner une vue Android en fonction des dimensions de son parent

comment utiliser getMeasuredWidth() et getMeasuredHeight? Il retourne toujours 0. Quelle est la différence entre ceci et getHeight() et getWidth()?

65

Vous venez de trouver une solution pour obtenir la hauteur et la largeur d'une vue personnalisée:

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

    viewWidth = xNew;
    viewHeight = yNew;
}

Cela fonctionne dans mon cas.

61
Paresh Mayani

Désolé, cette question a déjà été posée. J'ai trouvé la réponse ici - Comment dimensionner une vue Android en fonction des dimensions de son parent

@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

N'essayez pas de les insérer dans son constructeur. Try Appelle-les dans la méthode onDraw().

13
Mozz

Vous pouvez utiliser la méthode suivante pour obtenir la largeur et la hauteur de la vue. Par exemple,

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

Cela donne la valeur convertie de la vue spécifiée dans la présentation XML.

Disons que si la valeur spécifiée pour la hauteur est 53dp en XML, vous obtiendrez la valeur convertie en entier sous la forme 80.

12
Sam

J'étais aussi perdu autour de getMeasuredWidth() et getMeasuredHeight()getHeight() et getWidth() pendant un long moment .......... plus tard J'ai trouvé la méthode onSizeChanged() vraiment utile.

Nouveau billet de blog: comment obtenir les dimensions en largeur et en hauteur d'une vue personnalisée (extension de vue) dans Android http://syedrakibalhasan.blogspot.com/2011/02/how-to -get-width-and-height-dimensions.html

9
Rakib

La différence entre getHeight() et getMeasuredHeight() est que la première méthode renverra la hauteur réelle du View, la seconde renverra la hauteur récapitulative des enfants de View . En d'autres termes, getHeight() renvoie la hauteur de la vue, getMeasuredHeight() renvoie la hauteur dont cette vue a besoin pour afficher tous ses éléments

6
OFFmind

Bien getheight prend la hauteur et getwidth la largeur. Mais vous appelez ces méthodes trop tôt. Si vous les appelez oncreate ou onresume, la vue n'est pas encore dessinée. Vous devez l'appeler après que la vue ait été dessinée.

1
Falmarri