2010-09-06 25 views
6

¿Cómo determina Android si mover el diseño cuando se muestra el teclado?¿Cómo determina Android si mover el diseño hacia arriba cuando se muestra el teclado?

Nota: soy consciente de que la propiedad de la actividad android:windowSoftInputMode="adjustResize|adjustResize|adjustUnspecified" existe, tal como se describe aquí http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft , pero en mi caso no parece tener ningún efecto. Este es mi problema:

Tengo dos actividades, más o menos el mismo diseño, pero la primera está usando un ListView que contiene una lista de botones. La segunda actividad tiene una vista de desplazamiento con botones. El resto es el mismo mismo número, de los botones, la misma altura de los elementos, etc.

Ahora, al pulsar el botón de búsqueda para abrir la barra de entrada de búsqueda, en mi primera actividad, la totalidad de los diseños será movida hasta . Mientras está en la segunda actividad, el diseño no se mueve hacia arriba, pero el teclado muestra simplemente encima. Así es como quiero que se comporte. ¿Cómo puedo lograr lo mismo con mi actividad que usa ListView?

En mi manifiesto, inicialmente no especifiqué ningún atributo android:windowSoftInputMode, pero incluso si lo hago, no hace ninguna diferencia; Probé los tres valores (adjustPan, adjustResize, adjustUndefined, sin ninguna diferencia).

Este es mi diseño:

1) http://pastebin.com/5zzVxjbK

2) http://pastebin.com/KFtPuHvP

Curiosamente, sin embargo: cuando me puse mi visibilidad ListView en mi diseño 1 (izquierda) para View.INVISIBLE, a continuación, ¡el diseño no se mueve!

alt text

+0

@Mathias Lin: Creo que tienes que publicar un código. simplemente 'listview' y' scrollview' no hacen nada? Mi conjetura es depende del diseño. – Praveen

+0

Aquí está el código, la 'sección del botón' se llama android: id = "@ + id/category_questions" en ambos casos, no estoy seguro si esa es la parte relevante. 1) http://pastebin.com/5zzVxjbK, 2) http://pastebin.com/KFtPuHvP –

+0

Sí, estoy seguro de que tiene que ver con el diseño, pero ¿cómo? Los documentos para desarrolladores de Android no dicen mucho al respecto. –

Respuesta

0

puedo lograr esto con un RelativeLayout y el establecimiento de android:windowSoftInputMode="adjustPan" así:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" > 

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

    <ListView android:id="@+id/android:list" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:layout_below="@id/Header" 
     android:layout_above="@+id/Footer" /> 

    <include android:id="@id/Footer" layout="@layout/footer" 
     android:layout_width="fill_parent" android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" /> 
</RelativeLayout> 

Es posible que puede llegar a alcanzar esto estableciendo la gravedad de pie de página (o layout_gravity) a "inferior" , si quieres mantener el LinearLayout, pero no estoy seguro.

+0

Tengo otras actividades (es decir, que contiene un listView que llena la pantalla al 90%, con solo un área pequeña para un encabezado de tabulación) en mi aplicación donde el diseño externo es un diseño lineal, y no experimento el efecto allí. Solo lo veo en algunas de las actividades. Creo que su diseño anterior funciona, pero me gustaría entender la lógica detrás de él, así sé cómo puedo cambiar el LinearLayout existente y/o qué causa exactamente este comportamiento. Estoy seguro de que hay soluciones, pero no quiero combatir los síntomas, sino el origen mismo. –

+0

¿Probaste la gravedad del pie de página (layout_gravity): "bottom" con "adjustPan"? –

+0

Parece que las vistas de lista se "desplazan a la vista" a menos que estén ancladas en la parte inferior de la pantalla y usen adjustPan. Este comportamiento predeterminado evita que el teclado virtual cubra los elementos de la lista. –

Cuestiones relacionadas