2011-05-12 6 views
6

Estoy tratando de utilizar VIEWSTUB dentro de la fusión tag.and su trabajo well.I'm capaz de atrapar onclicklistenr de padre de ViewStub button.But quiero acceder al botón que está dentro del viewstub.acceder a la ViewStub'child

1.Main xml:

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

diseño 2.View talón de

<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> 

estoy inflando vista ramal en una actividad ... aquí quiero evento de clic de fuego en el botón cancelar. Cómo será posible

+0

PLZ consideran código completo haciendo clic en Editar – Sameer

Respuesta

20

Supongamos que su ID de ViewStub es view_stub. Que tiene que hacer lo siguiente en la actividad:

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

Ahora usted puede hacer lo que quiera con el botón :) Es decir, el método de inflado devuelve el talón de diseño que contiene los elementos reales del archivo XML.

Por supuesto, siempre se puede tener el atributo onClick XML ...

En cuanto a la eliminación de la ViewStub - la pregunta es doble (marque http://developer.android.com/resources/articles/layout-tricks-stubs.html):

  • antes de la inflación de la ViewStub: en realidad no puedes eliminarlo. No es necesario, sin embargo, dado que ViewStub "no tiene dimensión, no dibuja nada y no participa en el diseño de ninguna manera".

  • después del inflado: solo tiene que tomar la vista devuelta por el método ViewStub.inflate() y hacer lo que quiera con ella, por ejemplo, ocultarla.

+0

Gracias Kamen..If ​​Quiero eliminar trozo de mi pantalla dynamically.How para eliminarlo? – Sameer

+0

lo tengo. Gracias agian – Sameer

Cuestiones relacionadas