Android EditText Multiline con SoftInputMode adjustPan

Tengo una actividad para editar algún texto con una barra superior una vista EditText en modo multilínea dentro de una vista de desplazamiento. En la parte inferior otra vista con 2 botones. Lo que quería lograr es cuando se edita el texto que la barra inferior estaría por debajo del softkeyboard. Eso es fácil de usar android: windowSoftInputMode = "adjustPan" en el manifiesto. El problema es si el edittext se convierte en lo suficientemente grande con varias líneas, al editar la barra superior desaparece. Esto sólo ocurre cuando se utiliza el modo adjustPan. Pero lo peor y creo que es un error, es cuando el cursor está al final de la vista edittext y desplazamiento hacia arriba con el joystick D-Pad todo el diseño se tira a la parte superior.

Esta es la pantalla sin foco en el EditText: http://i.stack.imgur.com/pFadV.png

Cuando el error ocurre con el desplazamiento, esto sucede: http://i.stack.imgur.com/eS8PP.png

Mi diseño es el siguiente:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/BackgroundGray" android:gravity="top|center" android:orientation="vertical" android:windowSoftInputMode="adjustPan" > <RelativeLayout android:id="@+id/top_bar" android:layout_width="fill_parent" android:layout_height="45dip" android:layout_alignParentTop="true" android:background="@drawable/top_bar" android:focusable="true" android:focusableInTouchMode="true" > <ImageView android:id="@+id/bar_item_priority" android:layout_width="4dip" android:layout_height="34dip" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:contentDescription="@string/priority" /> <EditText android:id="@+id/bar_title" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="6dip" android:background="@android:color/transparent" android:fadingEdge="vertical" android:gravity="center_vertical|left" android:hint="@string/default_title" android:inputType="text|textCapSentences" android:paddingLeft="10dip" android:textColor="#f3f3f3" android:textColorHint="#20ffffff" android:textSize="20dip" android:textStyle="bold" > </EditText> </RelativeLayout> <View android:id="@+id/main_top_bar_shadow" android:layout_width="fill_parent" android:layout_height="1dip" android:layout_below="@+id/top_bar" android:background="@color/TopBarShadow" /> <LinearLayout android:id="@+id/meta_bar" android:layout_width="fill_parent" android:layout_height="25dip" android:layout_below="@+id/main_top_bar_shadow" android:background="#313435" android:descendantFocusability="blocksDescendants" > <TextView android:id="@+id/meta_date_modified" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical|left" android:paddingLeft="10dip" android:paddingRight="10dip" android:paddingTop="6dip" android:shadowColor="#1d1d1d" android:shadowDx="1" android:shadowDy="1" android:shadowRadius="2" android:text="@string/default_date" android:textColor="#9d9d9d" android:textSize="12dip" android:textStyle="bold" > </TextView> </LinearLayout> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@+id/bottom_bar" android:layout_below="@+id/meta_bar" android:fillViewport="true" android:scrollbarSize="2dip" android:scrollbarThumbHorizontal="@drawable/scrollbar" android:scrollbarThumbVertical="@drawable/scrollbar" android:scrollbars="vertical" > <view android:id="@+id/note" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/transparent" android:capitalize="sentences" class="home.greven.notes.NoteEditor$LinedEditText" android:fadingEdge="vertical" android:gravity="top" android:paddingBottom="8dip" android:paddingLeft="11dip" android:paddingRight="11dip" android:paddingTop="8dip" android:textSize="16sp" > </view> </ScrollView> <View android:id="@+id/bottom_bar_shadow" android:layout_width="fill_parent" android:layout_height="1dip" android:layout_above="@+id/bottom_bar" android:background="@color/TopBarShadow" android:focusable="false" android:focusableInTouchMode="false" /> <LinearLayout android:id="@+id/bottom_bar" android:layout_width="fill_parent" android:layout_height="40dip" android:layout_alignParentBottom="true" android:background="@drawable/bottom_buttons_bar" android:descendantFocusability="blocksDescendants" > <Button android:id="@+id/bottom_bar_button_plaintext" style="@style/NoteEditorButtonText" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_margin="4dip" android:layout_weight="0.5" android:background="@drawable/small_blue_buttonstates" android:text="@string/plain_text" /> <Button android:id="@+id/bottom_bar_button_checklist" style="@style/NoteEditorButtonText" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_margin="4dip" android:layout_weight="0.5" android:background="@drawable/small_gray_buttonstates" android:onClick="toChecklist" android:text="@string/checklist" /> </LinearLayout> </RelativeLayout> 

Si utilizo adjustResize en android: windowSoftInputMode todo funciona bien, pero luego la barra inferior será visible al editar, algo que no quería que suceda. Creo que este problema de desplazamiento es un error de Android. ¡Cualquier ayuda será muy apreciada!

Tengo el mismo problema con el botón en la parte inferior. Después de días de googling encontré esto es debido a los desaparecidos

  android:isScrollContainer="false" 

En el ScrollView.

El documento de Android menciona esto

Establezca esto si la vista servirá como un contenedor de desplazamiento, indicando que se puede cambiar el tamaño para reducir su ventana general de modo que haya espacio para un método de entrada.

Editar : También compruebe esta respuesta

  • Android TabWidget sin TabHost con acciones personalizadas
  • Cómo capturar el evento de prensa larga para el elemento Listeview de un ListActivity?
  • Vista de lista de Android setOnItemClickListener no funciona
  • Obtener el número de teléfono en formato XXX-XXX-XXXX desde el cuadro edittext en android
  • ¿Dónde está el archivo de diseño de mi actividad de configuración?
  • Añadir botones a la disposición relativa Dinámica o extensión lineal Layout android
  • Android - Combinación de varios estilos de fuente, en una sola fuente (Tipo)
  • Adaptador ListView personalizado Android
  • Desplazarse a Cadena específica en el elemento de vista de lista personalizada
  • Cómo personalizar el ancho y la altura cuando se muestra una actividad como un cuadro de diálogo
  • ¿Cómo puedo establecer un EditText a la entrada de sólo números hexadecimales?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.