2011-12-21 11 views
21

tengo un problema. Desarrollo aplicaciones para Android.¿Cómo puedo cambiar el diseño xml incluido a otro diseño en código Java?

que incluía la disposición segunda de la primera disposición de la siguiente manera:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="300dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="clip_horizontal" 
    android:layout_alignParentLeft="true" 
    android:id="@+id/rlMenu" 
    > 

    <Button 
     android:id="@+id/bMusteriler" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Musteriler" 
     android:textSize="45dp" 
     android:layout_alignParentLeft="true" 
     /> 

</RelativeLayout> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_toRightOf="@id/rlEkranlar" 
    > 

    <include 
     android:id="@+id/include1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     layout="@layout/ikinci" /> 

</RelativeLayout> 
</RelativeLayout> 

El problema es cómo puedo cambiar el diseño se incluye cuando se hace clic en un botón (en el código de Java)?

Lo siento por mi inglés. Gracias.

+0

crear un nuevo archivo XML y la actividad y ponerse segundo través de la intención. –

+0

por favor modifique su pregunta, no está muy claro. –

+0

@YugandharBabu Deseo cambiar el diseño = "@ layout/ikinci" a layout = "@ layout/third_layout" cuando haga clic en el botón. – UurYsr

Respuesta

51

que sugieren ViewFlipper dentro de sus RelativeLayoutinclude declaraciones. Pruebe de esta manera:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/vf" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <include android:id="@+id/include1" layout="@layout/ikinci" /> 
    <include android:id="@+id/map" layout="@layout/third_layout" /> 

</ViewFlipper> 

Acceda a ViewFlipper como a continuación. Inicialmente primera disposición es de salida:

ViewFlipper vf = (ViewFlipper)findViewById(R.id.vf); 

Para OnClickListener Botón:

button.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       vf.setDisplayedChild(1); 
      } 
     }); 
+0

Muchas gracias. Ha solucionado el problema =)) – UurYsr

+0

Si obtuvo la respuesta, márquelo. eres bienvenido amigo –

+0

Creo que lo hice, gracias de nuevo. – UurYsr

0

Ha intentado obtener la instancia de la vista actual del xml que ha incluido el otro xml y usa findViewById(). Ver v es el primer diseño y en contra de este punto de vista se utilice .findViewById()

+0

intenté esto: Layout L1 = (Layout) findViewById (R.id.layout1); Hay un error de conversión. No se puede convertir la vista a diseño. ¿Estoy haciendo cosas equivocadas? – UurYsr

+0

¿Disposición? No existe dicha Vista en SDK siempre que haya creado la suya propia. Asegúrese de hacer referencia a los nombres de clase correctamente. Me gusta: LinearLayout, RelativeLayout, FrameLayout .... –

+0

Entiendo, intentaré esto. Gracias – UurYsr

20

Hay dos formas de cambiar los diseños de código:

A. Cambio visibilidad. Incluyen la estopa diferentes diseños en el xml:

<include 
    android:id="@+id/id1" 
    android:visibility="visible"/> 
<include 
    android:id="@+id/id2" 
    android:visibility="gone"/> 

y en el código de uso de este:

findViewById(R.id.id1).setVisibility(View.GONE); 
findViewById(R.id.id2).setVisibility(View.VISIBLE); 

B. añadir manualmente los niños. Utilice el mismo XML como se utiliza y añade en el código que puede agregar o eliminar los niños:

yourRelativeLayout.removeAllViews(); 
yourRelativeLayout.addView(viewToInclude); 

Offtopic:

No es necesario escribir xmlns:android parámetro en RelativeLayout. Solo para la etiqueta más alta en el archivo de diseño.

+0

Gracias @ Jin35, probé su solución y la corrigió. – UurYsr

+3

Estaba confundido porque Intellij 14 no ofrece "visibilidad" en las opciones de autocompletar. –

Cuestiones relacionadas