2010-10-25 22 views

Respuesta

10

Per de Austyn, que logró localizar alguna orientación sobre cómo utilizar ViewFlipper de lograr esto en otro post (véase la respuesta arriba la marca de verificación here.)

Si no desea utilizar ViewFlipper, me encontrado un buen ejemplo de cómo cambiar entre diseños en la misma vista here:

XML:

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <ImageView 
     android:src="@drawable/icon" 
     android:scaleType="fitCenter" 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent"/> 
    <TextView 
     android:text="Learn-Android.com" 
     android:textSize="24sp" 
     android:textColor="#000000" 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent" 
     android:gravity="center"/> 
</FrameLayout> 

Código:

private void SwitchLayout2() { 
RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1); 
RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2); 

// Enable Layout 2 and Disable Layout 1 
Layout1 .setVisibility(View.GONE); 
Layout2.setVisibility(View.VISIBLE); 
} 

private void SwitchLayout1() { 
RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1); 
RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2); 

// Enable Layout 1 & Disable Layout2 
Layout1.setVisibility(View.VISIBLE); 
Layout2.setVisibility(View.GONE); 
} 
+4

Deberías estar usando un 'ViewFlipper' para hacer esto y no solo cambiando la visibilidad en cada' View' –

+1

@AustynMahoney, sería genial saber la razón por la que es mejor usar un ViewFlipper en lugar de glenviewjeff's método descrito. – user438293456

+0

¿Por qué querría reinventar la rueda cuando Android ya proporciona una forma muy sencilla de lograr esto exactamente? ¿Qué sucede cuando quieres expandir esto a 3 diseños, o quizás 18? Si usaste 'ViewFlipper' es muy simple, si no has tenido buena suerte manteniendo esa base de código. –

4

No, no puede llamarlo varias veces fácilmente. Debe eliminar por completo todas las vistas y luego inflar el nuevo diseño, o usar un ViewFlipper (o FrameLayout) para cambiar entre diferentes vistas.

En una nota lateral, esta pregunta se ha hecho antes, aunque no pude encontrarla de inmediato. comentario

0

Usted puede tratar esto de su actividad:

getWindow().addContentView(View, ViewGroup.LayoutParams); 

Los dos vistas de contenido será una encima de la otra. Pero, no hay una manera directa de eliminar una determinada vista agregada de esta manera.

También tenga en cuenta que al llamar al setContentView después de la última llamada, se eliminarán todas las vistas anteriores de contenido agregado.

Cuestiones relacionadas