ImageView.getWidth () renvoie 0
- Je obtenir de l'imageView largeur de 0. Ci-dessous est le code.
fichier xml :
<ImageView
android:id="@+id/img"
android:layout_width="200dp"
android:layout_height="200dp" />
Activité :
@Override
protected void onResume() {
super.onResume();
ImageView img = (ImageView) findViewById(R.id.img);
Log.d(TAG, "width : " + img.getWidth());
}
Je ne veux pas utiliser de code ci-dessous que j'ai besoin de placer ce code dans de nombreux endroits.
ViewTreeObserver vto = img.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
ImageView img = (ImageView) findViewById(R.id.img);
Log.d(TAG, "width : " + img.getWidth());
return true;
}
});
Ma solution :
J'ai effectivement plus tard, n'a pas besoin d'ajouter ce code dans une activité. Je l'ai ajouté à un non-activité de la classe et au lieu de l'ImageView de la largeur, j'ai utilisé de l'image Bitmap largeur et maintenant n'ont pas ce problème.
source d'informationauteur Geek | 2013-10-09
Vous devez vous connecter pour publier un commentaire.
Où vous appeler
getWidth()
etgetHeight()
sur ImageView? Si vous appelez de l'onCreate()
en activité, il ne fonctionnera pas. Vous avez besoin d'attendre pour l'activité de la fenêtre ci-jointe, puis appelergetWidth() and getHeight()
sur ImageView. Vous pouvez essayer d'appelergetWidth() and getHeight()
deonWindowFocusChanged()
méthode de votre activité.appel sur onWindowFocusChanged comme de cette façon
Car vous avez déjà un "fixe" largeur imageView de 200dp pourquoi ne pas vous mettre dans dimens.xml
et puis tout simplement
bien j'ai trouvé beaucoup de beaucoup de questions connexes qui sont en double à cette question, et la plupart des réponses étaient pas adaptés à mon cas.
Je suis venu avec une solution qui peut convenir pour le tien comme il le fait pour moi. Simplement, j'ai créé une coutume
ImageView
et a ajouté un nouveau rappelOnSizeChangedCallback
qui est appelée à chaque fois que la taille de la vue est changé à zéro des valeurs.Voici un exemple de code de mon propre:
et vous pouvez simplement l'utiliser comme suit:
questions connexes: