La documentation Android indique qu'il existe deux tailles pour une vue, les dimensions mesurées et les dimensions du dessin . La dimension mesurée est celle calculée dans la passe de mesure ( méthode onMeasure ), tandis que les dimensions du dessin sont la taille réelle à l'écran. En particulier, la documentation indique que:
Ces valeurs peuvent, mais pas nécessairement, être différentes de la largeur et de la hauteur mesurées.
Donc, ma question est: qu'est-ce qui pourrait rendre la dimension du dessin différente de la dimension mesurée? Si la méthode onMeasure (int, int) respecte les exigences de mise en page (données comme paramètres widthMeasureSpec et heightMeasureSpec , comment le SDK pourrait-il décider que la vue doit avoir une taille de dessin différente?
De plus, comment / où dans le code source Android la largeur / hauteur mesurée est-elle utilisée pour calculer la largeur / hauteur du dessin? J'ai essayé de regarder dans le code source de View , mais je ne peux pas comprendre comment la largeur / hauteur mesurée est utilisée pour calculer la largeur / hauteur finale. Peut-être que cela a quelque chose à voir avec le rembourrage, mais je ne suis pas sûr.
la source
Réponses:
Comme son nom l'indique, la largeur / hauteur mesurée est utilisée pendant la phase de mesure et de mise en page.
Laissez-moi vous donner un exemple,
Un widget est invité à se mesurer, le widget dit qu'il veut être de 200 px par 200 px. Ceci est mesuré Largeur / Hauteur.
Pendant la phase de mise en page, c'est-à-dire dans la méthode onLayout. La méthode peut utiliser la largeur / hauteur mesurée de ses enfants ou affecter une nouvelle largeur / hauteur en appelant la méthode de disposition de la vue.
disons que la méthode onLayout appelle childview.layout (0,0,150,150) maintenant la largeur / hauteur de la vue est différente de la largeur / hauteur mesurée.
Je suggérerais de ne pas utiliser la méthode onLayout mesuréWidth / height.
résumer .
public void View.layout(int l, int t, int r, int b)
semble en outre être le lieu où l'attribution de la position et de la taille se produit.
la source