2011-05-12 5 views
6

Je suis en train d'utiliser VIEWSTUB dans la fusion tag.and son travail well.I'm capable d'attraper onclicklistenr de parent de ViewStub button.But je veux accéder au bouton est à l'intérieur du viewstub.Pas en mesure d'accéder ViewStub'child

1.Main xml:

<merge> 
<LinearLayout> 
<Button></Button> 
<ViewStub></ViewStub> 
</LinearLayout> 
</merge> 

2.Consultez talon mise en page

<Button android:id="@+id/button_cancel" android:layout_width="wrap_content" 
android:layout_height="wrap_content" android:minWidth="100dip" 
android:text="Next" /> 
<ImageView 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:id="@+id/imageView" 
android:background="@drawable/golden_gate" 
/> 
</LinearLayout> 

Je Gonflage stub vue dans une activité ... Ici, je veux feu cliquez sur l'événement sur le bouton annuler.Comment cela sera possible

+0

Plz voir le code complet en cliquant sur modifier – Sameer

Répondre

20

Supposons que votre ID ViewStub soit view_stub. Vous devez faire ce qui suit dans l'activité:

ViewStub viewStub = (ViewStub) findViewById(R.id.view_stub); 
View inflatedView = viewStub.inflate(); 
Button button = (Button) inflatedView.findViewById(R.id.button_cancel); 

Maintenant, vous pouvez faire tout ce que vous voulez avec le bouton :) C'est, la méthode décompressé retourne la mise en page de talon qui contient les éléments réels à partir du fichier XML.

Bien sûr, vous pouvez toujours avoir l'attribut XML onClick ...

En ce qui concerne la suppression du ViewStub - la question est double (vérifier http://developer.android.com/resources/articles/layout-tricks-stubs.html):

  • avant l'inflation du ViewStub - vous ne pouvez pas le supprimer. Inutile, cependant, puisque ViewStub "n'a pas de dimension, il ne dessine rien et ne participe d'aucune façon à la mise en page". Après le gonflage - il suffit de prendre la vue renvoyée par la méthode ViewStub.inflate() et de faire ce que vous voulez avec, par exemple, le cacher.

+0

Merci Kamen..Si je veux supprimer stub de mon écran dynamiquement.Comment l'enlever? – Sameer

+0

je l'ai eu.thanks agian – Sameer