Android edittext auto crecer con el texto y empujar las cosas hacia abajo

Sí, esta es otra cuestión editext creciente sobre SO. Y sí, ya he pasado por todas esas preguntas editext crecer. Pero esto un poco específico.

UI:

Introduzca aquí la descripción de la imagen

Una disposición androide simple con edittext y un botón debajo de él. Cuando el texto es menor, la vista edittext sigue cubriendo toda la pantalla dejando espacio para el botón de abajo.

Una vez que el usuario comienza a escribir texto, edittext crece verticalmente para acomodar el texto. Al mismo tiempo, el botón también debe mantenerse empujando hacia abajo para dejar crecer.

El usuario puede desplazarse verticalmente por la pantalla para ver el texto completo.

UI después de introducir texto significativo:

Introduzca aquí la descripción de la imagen

Aquí está el diseño con edittext y el botón de abajo:

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/background" android:clipToPadding="false" android:fadingEdge="none" android:fillViewport="true" android:padding="13dp" android:scrollbarStyle="outsideOverlay" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <!-- some fixed width image --> <ImageView android:id="@+id/someimage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:src="@drawable/page_white_text" /> <EditText android:id="@+id/some" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/someimage" android:background="@null" android:gravity="top" android:minLines="10" android:minHeight="50dp" android:textColor="#222222" android:textSize="15dp" android:typeface="serif" > <requestFocus /> </EditText> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:baselineAligned="true" android:layout_marginTop="5dp" android:padding="10dp" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout> </RelativeLayout> </ScrollView> 

Esto funciona más o menos. Pero cuando entro a mucho texto, en lugar de presionar el botón hacia abajo. Va detrás de ella como:

Introduzca aquí la descripción de la imagen

Cualquier ayuda aquí es muy apreciada. Gracias 🙂

Aquí está mi recomendación: dentro del ScrollView, pon un RelativeLayout en el que puedes colocar cada elemento en un cierto orden usando android: layout_below. Para el crecimiento automático de su EditText, utilice esta solución .

Veamos un ejemplo:

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center"> <RelativeLayout android:id="@+id/general2" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_margin="20sp" > <TextView android:id="@+id/textFirstOpinion" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/titleFirstOpinion" android:textStyle="bold" android:textSize="23sp" android:textColor="#FFFFFF" android:layout_marginTop="10dp" /> <EditText android:id="@+id/fieldFirstOpinion" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/textFirstOpinion" android:minHeight="80sp" android:isScrollContainer="true" android:inputType="textMultiLine" android:textSize="20sp" android:gravity="top|left" /> <Button android:id="@+id/button" android:layout_width="110dp" android:layout_height="wrap_content" android:layout_below="@id/fieldFirstOpinion" android:layout_centerHorizontal="true" android:layout_marginTop="37sp" android:textSize="23sp" android:text="@string/textSendButton" android:gravity="center_horizontal" android:padding="10dp" /> </RelativeLayout> </ScrollView> 

Intenta agregar android: layout_below = "@ id / some" en tu LinearLayout como

  <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:baselineAligned="true" android:layout_marginTop="5dp" android:padding="10dp" android:orientation="vertical" android:layout_below="@id/some" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout> 

Puesto que desea que el botón esté en la parte inferior de la página, agregue la línea siguiente

 android:layout_below="@+id/some" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" 

En su código LinearLayout aquí como

  <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/some" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:baselineAligned="true" android:layout_marginTop="5dp" android:padding="10dp" android:orientation="vertical" > 

También asegúrese de que el parámetro layout:height de EditText esté configurado en wrap_content Intente esto y dígame si funciona o no

  • Detener la vista web de Android que cubre tabwidget
  • OnListItemClick no funciona para listview?
  • ¿Cómo configurar este Layout que se ajuste a cualquier altura de pantalla?
  • En una actividad tabulada con ViewPager, el ListView aparece cortado desde la parte inferior
  • No se puede encontrar el girador después de girar la pantalla
  • Mostrar iconos en el menú de opciones al usar Theme.Holo
  • Obtener dimensiones redimensionables appwidget (o moverse alrededor)
  • Programar de forma programada android: layout_centerHorizontal
  • ¿Cómo agregar un listview dentro de un viewpager?
  • Disposición habilitada para Android
  • Múltiples vistas de lista en un diseño de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.