Si je l'appelle getMeasuredWidth() ou getWidth() pour la mise en onResume ils return 0
Si je l'appelle getMeasuredWidth() ou getWidth() pour la mise en onResume ils retourne 0.
Je pense que ce point de vue, il n'est pas encore dessinés en ce moment.
Aussi, je pense que j'ai besoin de mettre getMeasuredWidth() ou getWidth() dans la fonction de callback appelée après la mise en page est tirée et afficher les mesures sont connus.
Ce android de rappel de la méthode dois-je utiliser?
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser le
width
/height
/getMeasuredWidth
/getMeasuredHeight
sur unView
avant que le système affiche (généralement à partir deonCreate
/onResume
).Solution Simple pour cela est d'envoyer un
Runnable
à la mise en page. L'exécutable sera exécuté après laView
a été aménagé.ViewTreeObserver
approche, mais c'est tellement de plus simple!View
:doOnLayout()
oudoOnNextLayout()
. Il y a aussidoOnPreDraw()
disponible aussi 🙂Cette réponse dit:
Utiliser le
ViewTreeObserver
sur leView
à attendre pour le premier modèle. Seulement après la première mise en pagegetWidth()/getHeight()/getMeasuredWidth()/getMeasuredHeight()
travail.vous pouvez remplacer onLayout() de votre point de vue; il est utilisé par android à la position de chacun des enfants à la vue de a, de sorte que vous pourriez faire les choses que vous voulez faire après le
super(..)
appel.En effet, il apparaît que si la mise en page n'est pas affichée sur l'écran de la getWidth() la méthode retourne 0. Ce qui semble fonctionner pour moi, c'est l'appel de la méthode measure() avant d'appeler la getMeasuredWidth() ou getMesuredHeight(). Pour la méthode de mesure, j'ai utilisé la Mise en page.WRAP_CONTENT arguments pour obtenir une mesure de ce que la mise en page contient de l'.
Espère que cette aide,
Mihai
Plus simple:
http://developer.android.com/reference/android/view/View.html#post(java.lang.Runnable)
Solution n ° 1:
Pour le faire de manière dynamique, vous avez besoin d'une balise. Une balise est essentiellement un moyen pour les vues en garde de bons souvenirs. Ainsi de sauver la convertView dans une autre classe (Montag).
Donc, à l'intérieur de votre fichier java:
Solution #2:
Coder en dur. Pré-régler la largeur.
À l'intérieur de votre res/values/dimens.xml fichier, comprennent
Puis à l'intérieur de votre res/layout/your_layout.xml fichier, comprennent
Puis à l'intérieur de votre fichier java:
Utilisez code ci-dessous: