ScrollView no se desplaza si el teclado virtual está visible

Estoy usando un diseño simple para una pantalla de inicio de sesión que contiene una barra en la parte superior y los elementos necesarios para que el usuario inicie sesión o vaya a la actividad de registro.

Todos los elementos encajan perfectamente en la pantalla hasta que aparezca el teclado virtual. El teclado virtual de Android oculta parte del formulario y quiero usar un ScrollView para que el usuario pueda desplazarse y poder ver todos los elementos.

Pero, incluso con ScrollView, no puedo desplazarte para ver la parte inferior de la página:

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true" > <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFCB05" android:orientation="vertical" android:isScrollContainer="true" android:gravity="top" > <include android:id="@+id/include1" android:layout_width="fill_parent" android:layout_height="50dip" layout="@layout/actionbar_layout" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF" android:orientation="vertical" android:gravity="center_vertical" android:layout_below="@+id/include1" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="@string/usuario" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#000000" /> <EditText android:id="@+id/txtUsuario" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView1" android:layout_marginTop="5dp" android:ems="10" android:hint="@string/usuario" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_marginTop="15dip" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:text="@string/senha" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#000000" /> <EditText android:id="@+id/txtSenha" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView2" android:layout_centerVertical="true" android:layout_marginTop="5dip" android:ems="10" android:hint="@string/senha" android:inputType="textPassword" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="right" > <Button android:id="@+id/logarBtn" android:layout_width="93dp" android:layout_height="wrap_content" android:layout_marginRight="30dip" android:layout_marginTop="15dip" android:layout_marginBottom="15dip" android:text="@string/logar" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_horizontal" > <TextView android:id="@+id/registerBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/logarBtn" android:layout_centerHorizontal="true" android:layout_marginTop="20dip" android:layout_marginBottom="60dip" android:linksClickable="true" android:text="@string/cadastrar" android:textColor="#0000CC" android:textSize="18dp" /> </LinearLayout> </LinearLayout> </RelativeLayout> </ScrollView> 

Creo que podría hacer esto: Teclado Soft Android Obscure EditTexts en ScrollView, pero no parece la mejor práctica.

¿Alguien sabe de una mejor manera de hacer que se desplace correctamente?

Echa un vistazo al siguiente enlace:

Android: ScrollView no se desplaza con el teclado fuera

Esta solución funcionó para mí.

 public class CustomScrollView extends ScrollView { private int scrollOffset = 0; public CustomScrollView (final Context context, final AttributeSet attrs) { super(context, attrs); } public void setScrollOffset (final int scrollOffset) { this.scrollOffset = scrollOffset; } @Override protected int computeScrollDeltaToGetChildRectOnScreen (final Rect rect) { // adjust by scroll offset int scrollDelta = super.computeScrollDeltaToGetChildRectOnScreen(rect); int newScrollDelta = (int) Math.signum(scrollDelta) * (scrollDelta + this.scrollOffset); return newScrollDelta; } } 

Utilice esta vista de desplazamiento personalizada en lugar de la vista de desplazamiento normal. Cambie el valor de scrollOffset para obtener el resultado deseado (scrollOffset = 10 significa que se extraerá 10dp extra cuando se abra el teclado android:windowSoftInputMode="adjustResize" ) Asegúrese de que android:windowSoftInputMode="adjustResize" se agrega en la actividad

  • Hacer que una vista secundaria coincida con el ancho de una vista de desplazamiento principal
  • Menú Ribbon de Android con fragmentos
  • ¿Hay una manera de desactivar / editar el desvanecimiento que una vista de lista tiene en sus bordes?
  • Espacios en blanco usando la vista web de android dentro de scrollview con una red móvil de jQuery
  • Android, última línea de textview dentro de scrollview ligeramente corte
  • Scrollview no desliza cuando es demasiado corto para desplazarse
  • Efecto de desplazamiento con múltiples visualizadores
  • ListView dentro de ScrollView no se desplaza en Android
  • Mantener la posición de desplazamiento ScrollView para contenido dinámico
  • Android ScrollView (desplazable en Horizontal y Vertical suavemente) en el que el contenido se puede agregar programable y zoomable en pinch
  • Desplazamiento de EditText dentro de ScrollView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.