2010-11-22 34 views
4

J'ai un bouton d'image cachée dans l'une de mes mises en page xml, avec un fond mis à une image drawable. Je définis la visibilité sur invisible, car je veux seulement que l'image s'affiche de temps en temps. Le problème est, même si le dessin n'est pas affiché, le bouton image nous prend toujours de l'espace - Y a-t-il un moyen de cacher l'image de fond, et de faire des dimensions 0 jusqu'à ce que je l'affiche dans ma classe principale?Puis-je masquer un bouton d'image sur une mise en page (dimensions et arrière-plan) jusqu'à ce qu'un appel soit visible?

Merci!

Editer: Donc dans mon xml, comment est-ce que j'écrirais ça?

<ImageButton android:id="@+id/myimage" android:visibility="invisible" 
android:layout_width="wrap_content" android:layout_height="wrap_content" 
android:layout_gravity="center" android:background="@drawable/my_image"></ImageButton> 

Je veux avoir l'image toujours disparu, à moins qu'une certaine condition se produit, je veux alors que l'image soit visible sous cette seule condition. Donc, dans mon xml je devrais être mis à GONE, mais dans mon instruction conditionnelle, donc je dis quelque chose comme:

myimage.setVisibility (SHOW) ;?

Répondre

6

Toutes les vues, y compris ImageButton, hériter de android.view.View, ils ont tous un attribut de visibilité qui peut être réglé. Au lieu de définir la visibilité de la ressource drawable, définissez-le sur ImageButton.

+0

Il est défini le bouton de l'image lui-même, mais plus pour une raison quelconque, il conserve les dimensions de l'drawable tout en ne l'affichant pas (si cela a du sens). – Sapp

+0

En effet, j'ai vu la suggestion de mettre à "GONE" et l'a voté. Cela semble la meilleure solution. –

+0

Et si je changeais la visibilité de Gone dans mon xml et demandais qu'elle soit montrée sous certaines conditions dans ma méthode, j'ai édité dans ma question supplémentaire. Merci! – Sapp

14

Essayez réglage de la visibilité à GONE

+0

Que faire si je change de visibilité dans mon xml Allé et appeler pour qu'il soit affiché sous une certaine condition dans ma méthode, j'edited dans ma question supplémentaire. Merci! – Sapp

+0

Nice one! Je fais un ProgressBar au centre de l'écran et je passe à ImageView si la photo finit de charger. Je viens d'utiliser VISIBLE et GONE. Votre solution fonctionne. – Emerald214

9

Ne définissez pas la largeur/hauteur à zéro, c'est moche. La vue occupera toujours l'espace, sauf si vous modifiez le paramètre de visibilité. C'est le code que vous voulez:

myImageButton.setVisibility (View.GONE);

View.GONE - invisible, prend pas de place View.INVISIBLE - invisible, mais prend toujours l'espace View.VISIBLE - l'utiliser pour le ramener

+0

Et si je change la visibilité de Gone dans mon xml et que je demande qu'elle soit montrée sous certaines conditions dans ma méthode, j'ai édité dans ma question supplémentaire. Merci! – Sapp

1

Ensemble propriété de visibilité de Imageview comme celui-ci en java

imgView.setVisibility(View.VISIBLE); 
imgView.setVisibility(View.INVISIBLE); 
imgView.setVisibility(View.GONE); 

Ou comme celui-ci en XML

android:visibility="visible" 
android:visibility="gone" 
android:visibility="invisible" 

Résultat pour chaque sera comme celui-ci

enter image description here