Editar texto de la pantalla con GridLayout

Tengo la disposición siguiente, donde los textos de la edición salen de la pantalla con aparentemente ninguna razón. He intentado encontrar un problema similar, pero no pude. Debe ser fácil pero he intentado muchas cosas sin suerte.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <GridLayout android:id="@+id/gridLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ffffff" android:columnCount="2" android:orientation="horizontal" > <TextView android:id="@+id/titleTextView" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:paddingBottom="10dp" android:paddingTop="10dp" android:text="dsgsdgsd" android:textColor="@color/red" android:textStyle="bold" /> <View android:layout_width="fill_parent" android:layout_height="2dip" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:background="@color/red" /> <TextView android:id="@+id/textTitle" android:layout_gravity="left" android:background="#ffffff" android:paddingLeft="15dp" android:text="Title" android:textColor="@color/grey" /> <EditText android:id="@+id/editTitle" android:layout_gravity="right" android:inputType="text"> </EditText> <View android:layout_height="1dip" android:layout_columnSpan="2" android:layout_gravity="left" android:background="#E6E6E6" /> <TextView android:id="@+id/textCategory" android:layout_gravity="left" android:background="#ffffff" android:gravity="left" android:paddingLeft="15dp" android:text="Category" android:textColor="@color/grey" /> <EditText android:id="@+id/editCategory" android:layout_width="225dp" android:layout_gravity="right" android:inputType="text" /> <Button android:id="@+id/btnCreateAccount" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:background="#ffffff" android:onClick="createExpense" android:text="Done" android:textColor="@color/red" /> </GridLayout> 

Compruebe su código actualizado:

Te faltaban algunos anchos, atributos de altura y habías usado match_parent en elementos anteriores como View, lo que impidió que cualquier elemento posterior obtuviera espacio en la pantalla.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <GridLayout android:id="@+id/gridLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ffffff" android:columnCount="2" android:orientation="horizontal" > <TextView android:id="@+id/titleTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:paddingBottom="10dp" android:paddingTop="10dp" android:text="dsgsdgsd" android:textColor="@color/red" android:textStyle="bold" /> <View android:layout_width="wrap_content" android:layout_height="2dip" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:background="@color/red" /> <TextView android:id="@+id/textTitle" android:layout_gravity="left" android:background="#ffffff" android:paddingLeft="15dp" android:text="Title" android:textColor="@color/grey" /> <EditText android:id="@+id/editTitle" android:layout_gravity="right" android:inputType="text" > </EditText> <View android:layout_width="wrap_content" android:layout_height="1dip" android:layout_columnSpan="2" android:layout_gravity="left" android:background="#E6E6E6" /> <TextView android:id="@+id/textCategory" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" android:background="#ffffff" android:gravity="left" android:paddingLeft="15dp" android:text="Category" android:textColor="@color/grey" /> <EditText android:id="@+id/editCategory" android:layout_width="225dp" android:layout_height="wrap_content" android:layout_gravity="right" android:inputType="text" /> <Button android:id="@+id/btnCreateAccount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="#ffffff" android:onClick="createExpense" android:text="Done" android:textColor="@color/red" /> </GridLayout> </LinearLayout> 

La salida sin color y fondo, ya que me da error debido a falta de recursos es:

Introduzca aquí la descripción de la imagen

Aquí puede ver sus editexts en la pantalla.

Intenta esto puede ser esto te ayuda

 <GridLayout android:id="@+id/gridLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ffffff" android:columnCount="2" android:orientation="horizontal" > <TextView android:id="@+id/titleTextView" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:paddingBottom="10dp" android:paddingTop="10dp" android:text="dsgsdgsd" android:textColor="@color/red" android:textStyle="bold" /> <View android:layout_width="fill_parent" android:layout_height="2dip" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:background="@color/red" /> <TableRow android:id="@+id/tableRow1" > <TextView android:id="@+id/textTitle" android:background="#ffffff" android:paddingLeft="15dp" android:text="Title" android:textColor="@color/grey" /> <EditText android:id="@+id/editTitle" android:layout_width="250dp" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/activity_horizontal_margin" android:layout_weight="1" android:inputType="text" > <requestFocus /> </EditText> </TableRow> <View android:layout_height="1dip" android:layout_columnSpan="2" android:layout_gravity="left" android:background="#E6E6E6" /> <TextView android:id="@+id/textCategory" android:layout_gravity="left" android:background="#ffffff" android:gravity="left" android:paddingLeft="15dp" android:text="Category" android:textColor="@color/grey" /> <EditText android:id="@+id/editCategory" android:layout_width="225dp" android:layout_gravity="right" android:inputType="text" /> <Button android:id="@+id/btnCreateAccount" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:background="#ffffff" android:onClick="createExpense" android:text="Done" android:textColor="@color/red" /> </GridLayout> 

Cambie su parte de EditText a This one:

 <EditText android:id="@+id/editTitle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_column="0" android:layout_gravity="center_horizontal|top" android:layout_row="4" android:ems="10" android:inputType="text" /> 

Pruebe de esta manera, espero que esto le ayudará a resolver su problema.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <GridLayout android:id="@+id/gridLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ffffff" android:columnCount="2" android:orientation="horizontal" > <TextView android:id="@+id/titleTextView" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:paddingBottom="10dp" android:layout_row="0" android:paddingTop="10dp" android:text="dsgsdgsd" android:textColor="@color/red" android:textStyle="bold" /> <View android:layout_width="match_parent" android:layout_height="2dp" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_marginLeft="20dp" android:layout_row="1" android:layout_marginRight="20dp" android:background="@color/red" /> <TextView android:id="@+id/textTitle" android:layout_gravity="left" android:background="#ffffff" android:paddingLeft="15dp" android:layout_row="2" android:layout_column="0" android:text="Title" android:textColor="@color/grey" /> <EditText android:id="@+id/editTitle" android:layout_width="225dp" android:layout_gravity="right" android:layout_row="2" android:layout_column="1" android:inputType="text"> </EditText> <View android:layout_height="2dp" android:layout_columnSpan="2" android:layout_gravity="left" android:layout_row="3" android:background="#E6E6E6" /> <TextView android:id="@+id/textCategory" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" android:background="#ffffff" android:gravity="left" android:layout_row="4" android:layout_column="0" android:paddingLeft="15dp" android:text="Category" android:textColor="@color/grey" /> <EditText android:id="@+id/editCategory" android:layout_width="225dp" android:layout_column="1" android:layout_gravity="right" android:layout_row="4" android:inputType="text" /> <Button android:id="@+id/btnCreateAccount" android:layout_width="match_parent" android:layout_gravity="center" android:background="#ffffff" android:layout_row="5" android:layout_columnSpan="2" android:onClick="createExpense" android:text="Done" android:textColor="@color/red" /> </GridLayout> </LinearLayout> 

Como comentario general, nunca puedes usar wrap_content con EditText , siempre tomará el tamaño del contenido y no respetará ningún otro límite, por lo que un usuario siempre puede explotar un diseño simplemente escribiendo texto excesivo. Me tomó años para darse cuenta de esta observación muy básica de cómo android prioriza las diversas limitaciones.

En este contexto, cuando un GridLayout decide que no puede encajar una columna dentro de sus límites de origen, se da por vencido y aparece un resultado defectuoso, por lo que normalmente unido GridLayout por el ancho de la pantalla, la primera columna que excede el ancho será forzado pantalla.

Si desea tener campos de entrada grandes y pequeños para que coincidan con los tamaños de datos, la forma más sencilla es definir columnas ficticias con pesos que se pueden utilizar para ocupar espacio en la pantalla o extenderse a campos más grandes.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.