2010-08-24 16 views
17

he añadido un ViewSwitcher a un LinearLayout, que tiene dos puntos de vista de diferentes alturas, sin embargo parece que el ViewSwitcher está ocupando el espacio de los más grandes de los puntos de vista, en lugar de la organización en sí. ¿Es así como debería ser?ViewSwitcher altura y el diseño de Android

¿Qué hacer en el otro caso? Intenté crear un acordeón, donde el panel de título, al hacer clic crece en tamaño

Respuesta

43

El comportamiento predeterminado de ViewSwitcher, heredado por ViewAnimator, es considerar todas las vistas secundarias en el diseño, lo que dará como resultado que ViewSwitcher ocupe el espacio del niño más grande.

Para cambiar esto, todo lo que tiene que hacer es establecer el indicador MeasureAllChildren a falso. Esto hará que el pase de diseño ignore la vista secundaria que está oculta actualmente. Establezca esta marca, por ej. en el método onCreate de la actividad, por ejemplo:

ViewSwitcher switcher = (ViewSwitcher)findViewById(R.id.ViewSwitcher); 
    switcher.setMeasureAllChildren(false); 

ejemplo XML:

<ViewSwitcher xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/viewSwitcher" 
     android:measureAllChildren="false"> 
</ViewSwitcher> 
+0

el hombre, gracias – j2emanue

+0

¿Cómo hacer que sea animado y tener un oyente de su interpolación, mientras cambia a la otra vista, sin embargo? –

Cuestiones relacionadas