2010-09-27 6 views

Répondre

175

Je l'ai fait comme ceci:

((ViewManager)entry.getParent()).removeView(entry); 
+7

@schwiz vous volez le spectacle.nice answer – Sameer

+31

Dans les plus récents SDK son '(ViewGroup)' :) – Ron

+0

@schwiz comment pouvons-nous réinitialiser les ID de vue dans ce cas.Mon problème est même après que mon activité se termine chaque fois que la vue suivante est ajoutée l'ID de vue est incrémentée.I Je veux que l'ID de vue par défaut à 1 lorsque je reviens à cette activité à nouveau. – AndroidNewBee

19

Utilisez ViewStub et spécifiez la disposition de la vue à basculer. Pour afficher:

mViewStub.setVisibility(View.VISIBLE) or mViewStub.inflate(); 

Disparaître:

mViewStub.setVisibility(View.GONE); 
+20

Le masquage n'est pas la même chose que le retrait. – Darkwater

+0

Si vous souhaitez masquer/afficher, vous pouvez utiliser .setVisibility (View.INVISIBLE) et .setVisibility (View.VISIBLE). Lorsque la vue est invisible, l'utilisateur ne peut pas interagir avec. – dennisschagt

+0

Disons que j'ai un textView avec un onClickListener attaché à celui-ci. Si je le fais disparaître et que je tape dessus, l'événement va-t-il encore se déclencher? – ahitt6345

18

Ceci est la meilleure façon

LinearLayout lp=new LinearLayout(this); 
lp.addView(new Button(this)); 
lp.addView(new ImageButton(this)); 
//Now remove them 
lp.removeViewAt(0); // and so on 

Si vous avoir la disposition de xml alors pas besoin d'ajouter dynami cally.just appeler

lp.removeViewAt(0); 
+0

Quel sera le diff en termes de performance? Je veux dire la différence de performance de les ajouter dynamiquement ou de les mettre dans un fichier de mise en page xml statique et de le laisser gonfler? – zgulser

0

salut si vous êtes nouveau utilisé android cette façon Appliquer votre point de vue pour le rendre parti GONE est une façon, sinon, mettre la main sur la vue parent, et retirer l'enfant de là ..... obtenir autre la disposition des parents et d'utiliser cette méthode une enlever tous les enfants parentView.remove (enfant)

Je suggère d'utiliser l'approche GONE ...

+1

GONE masquera effectivement la vue mais ne la supprimera pas de la mise en page – Sababado

+1

Simple utiliser parentView.remove (removeViewName); –

+0

Vous avez raison à ce sujet, mais j'essayais de laisser entendre que vous ne répondiez pas à la question en fournissant la solution "GONE". – Sababado

14

pour ajouter à une vue mise en page, vous pouvez utiliser addView moi de la classe ViewGroup. Par exemple,

TextView view = new TextView(getActivity()); 
view.setText("Hello World"); 

ViewGroup Layout = (LinearLayout) getActivity().findViewById(R.id.my_layout); 
layout.addView(view); 

Il existe également un certain nombre de méthodes de suppression. Vérifiez la documentation de ViewGroup. Une façon simple de supprimer vue d'une mise en page peut être comme,

layout.removeAllViews(); // then you will end up having a clean fresh layout 
+3

removeAllViews() est ce que je cherchais! – Alan

+0

removeAllViews() fonctionne parfaitement pour moi, merci. – Aspicas

7

Pour changer la visibilité:

predictbtn.setVisibility(View.INVISIBLE); 

Pour enlever:

predictbtn.setVisibility(View.GONE); 
+0

Il a résolu mon problème, plus que toute autre réponse. Utile si comme moi, votre arrière-plan ou certains paramètres empêchent la vue de disparaître totalement. – Virthuss

+1

c'est parce que View.GONE ne supprime pas la vue pour la mise en page, la rend seulement invisible, et ne prend pas d'espace pour la mise en page. – Victor

1

Grande anwser de Sameer et Abel Terefe. Toutefois, lorsque vous supprimez une vue, dans mon option, vous souhaitez supprimer une vue avec certains ID. Voici comment faites-vous cela?

1, donne le point de vue d'un identifiant lors de sa création:

_textView.setId(index); 

2, enlever la vue avec l'id:

removeView(findViewById(index)); 
Questions connexes