IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Supprimer un Layout de l'affichage


Sujet :

Composants graphiques Android

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut Supprimer un Layout de l'affichage
    Bonsoir à toutes et à tous,

    Dans un RelativeLayout, j'en ai plusieurs autres d'affichés, chacun d'eux contenant un TextWiew, un Button et un EditText.

    Je veux supprimer de l'affichage un de ces RelativeLayout. Comment faites-vous ?

    J'ai essayé avec ceLayout.setVisibility(0); --> ça ne marche pas.

    J'ai réussi à le supprimer de l'affichage en mettant sa largeur et sa hauteur à 0, mais je trouve que ce n'est pas vraiment la solution ni élégant.

    Merci de votre aide.

    Pierre

  2. #2
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Je viens de voir deux solutions qui fonctionnent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	parentView.removeView(monLayout);
    	monLayout.setVisibility(RelativeLayout.GONE);
    Une question : que veut dire "remove" :

    est-ce simplement que cela supprime de l'affichage le Layout ou bien est-ce que cela supprime l'objet Layout de la mémoire (ce dont je doute vu le fonctionnement du garbage collector).

    Cordialement.

    Pierre

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 67
    Points : 86
    Points
    86
    Par défaut
    Salut,

    remove va complètement supprimer l'objet de ta view.

    View.GONE rend ton élément invisible ET il ne prend pas de place. En soit il n'existe plus du tout à l'affichage (uniquement, ton objet lui est toujours en vie)
    View.INVISIBLE rend ton élément invisible, mais il est toujours à prendre en considération au niveau de l'organisation du layout. Il est vraiment juste invisible

  4. #4
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par IronRabbit Voir le message
    ... remove va complètement supprimer l'objet de ta view.

    View.GONE rend ton élément invisible ET il ne prend pas de place. En soit il n'existe plus du tout à l'affichage (uniquement, ton objet lui est toujours en vie) ...
    Merci IronRabbit pour ces précisions. Pour autant, je ne saisis pas bien la différence entre ces deux propositions.

    • remove : l'objet est supprimé de la View. Je suppose que cela veut dire que l'objet n'est plus référencé dans la View et que, par conséquent, tout rafraichissement de la View n'appellera plus l'objet. L'objet existant toujours.
    • View.GONE : l'objet devient invisible et il ne prend plus de place. J’interprète ce "ne prend plus de place" comme voulant dire que sa place à l'écran est alors disponible. Je suppose qu'il est toujours référencé par la View, mais que la View "l'ignore" pour l'affichage. L'objet existant toujours.

    Si ce que je dis est vrai, alors, fonctionnellement, je ne vois absolument aucune différence entre ces deux propositions.

    Laquelle des deux choisirais-tu ?

    Cordialement.

    Pierre

  5. #5
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Fonctionnellement, pas de différence.
    Techniquement, il y a une, et de taille : ta vue est détruite totalement avec le remove(), donc a utiliser si elle ne reviendra pas. Ta vue est conservée avec View.GONE, donc a utiliser si tu risque de la faire réapparaitre.

    Cela change l'empreinte mémoire et la RAM utilisée et ne répond pas à la même finalité, même si le chemin semble le même.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 67
    Points : 86
    Points
    86
    Par défaut
    Entièrement d'accord avec Hizin.
    C'est un concept qui n'est pas évident à discerner, ta vue ayant 3 états : visible/invisible/gone

    Dans la pratique la différence est énorme entre remove et gone.
    Admettons, pour raison X, tu as n organisations d'éléments sur ton layout. Toujours raison X, chaque organisation est bien différente, avec des éléments distincts.
    Si tu utilises remove, tu instancieras à nouveaux chacun de tes éléments en passant d'une organisation à une autre.
    Si tu utilises gone, tu instancies tout une seule fois, et ensuite tu joues avec setVisibility.

  7. #7
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Dans un cas tu supprimes des nœuds de l'arbre (donc libère de la mémoire), dans l'autre non, tu modifies juste des propriétés.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  8. #8
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Encore merci Hephaistos007, Hizin et IronRabbit pour ce complément d'information qui met l'accent sur les différences fondamentales entre ces deux modes.

    Pour ce qui me concerne, je fabrique une application type "Mémo" où chaque objet affiché est la visualisation de données que je veux mémoriser. Je peux donc en créer ou en supprimer. Ceux que je supprime ne reviendront jamais. Donc, dans ce cas, il me semble que le "remove" est le bon choix ?

    Cordialement.

    Pierre

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 67
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Encore merci Hizin et IronRabbit pour ce complément d'information qui met l'accent sur les différences fondamentales entre ces deux modes.

    Pour ce qui me concerne, je fabrique une application type "Mémo" où chaque objet affiché est la visualisation de données que je veux mémoriser. Je peux donc en créer ou en supprimer. Ceux que je supprime ne reviendront jamais. Donc, dans ce cas, il me semble que le "remove" est le bon choix ?

    Cordialement.

    Pierre
    Si en effet, tes objets sont supprimés, il faut utiliser remove.
    Attention à ne pas confondre supprimés et cachés, ces différences de conception entraînant des différences dans le choix de ta méthode.
    Personnellement j'ai d'ailleurs plus tendance à utiliser GONE que INVISIBLE. remove est à mon sens encore à part.

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/04/2009, 15h40
  2. [Struts-Layout] Problème d'affichage
    Par lili2704 dans le forum Struts 1
    Réponses: 14
    Dernier message: 28/08/2008, 16h23
  3. Réponses: 2
    Dernier message: 25/02/2008, 08h35
  4. Réponses: 4
    Dernier message: 26/01/2007, 10h42
  5. [Tiles-Layout]Ordre des affichages
    Par Mayhem dans le forum Struts 1
    Réponses: 6
    Dernier message: 26/09/2006, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo