La columna GridLayout va más allá de sus límites

Estoy tratando de hacer una forma de cuadrícula, similar al ejemplo en el blog oficial de desarrolladores de Android.

Aquí está mi diseño:

<?xml version="1.0" encoding="utf-8"?> <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:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="48dp" android:layout_marginRight="48dp" android:layout_marginTop="@dimen/activity_vertical_margin" android:columnCount="2" android:rowCount="2"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="0" android:layout_gravity="end" android:layout_row="0" android:text="Send" android:textColor="?android:attr/textColorPrimary" android:textSize="24sp" /> <Spinner android:id="@+id/send_currency" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="1" android:layout_row="0" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="0" android:layout_gravity="end" android:layout_row="1" android:text="to" android:textColor="?android:attr/textColorPrimary" android:textSize="24sp" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="1" android:layout_row="1" android:hint="username" android:textColor="?android:attr/textColorPrimary" android:textSize="24sp" /> </GridLayout> </LinearLayout> 

Mi columna izquierda (texto estático, alineado a la derecha) está funcionando bien. Alinea el texto a la derecha y el ancho depende de la fila más ancha.

Sin embargo, la columna de la derecha parece estar dibujando manera fuera de los límites de GridLayout.

Vista previa de diseño con GridLayout seleccionado

En esa imagen, el cuadro azul es los límites de GridLayout. Ya puede ver el problema en la barra verde en la parte superior. El lado derecho se supone que debe detenerse en los límites de la GridLayout (como el lado izquierdo es), pero por alguna razón que va camino más allá.

Vista previa de diseño con la columna derecha seleccionada

El cuadro azul en esa imagen es los límites del EditText (se establece en wrap_content). Sin embargo, la caja de color aqua es el límite en el que se permite expandir. Cuando escribo muchos caracteres en el EditText, va más allá de los límites de GridLayout, e incluso más allá del borde de la pantalla del teléfono!

Captura de pantalla

¿Se trata de un error en GridLayout? ¿O me estoy perdiendo algo?

4 Solutions collect form web for “La columna GridLayout va más allá de sus límites”

Ese es el comportamiento "normal" de GridLayout .

Afortunadamente, hay una nueva versión de GridLayout , que se agregó con API 21. Gracias de ese hecho, puede hacer que GridLayout niños a su ancho o altura de acuerdo a su orientación.

Para conocer detalles, consulte la documentación , especialmente en la Visión general de clases -> Distribución de espacio en exceso . Usted puede encontrar allí información cómo utilizar GridLayout en la forma que desee.


Propina:

No olvides que para hacer uso de GridLayout nuevo, tienes que añadirlo como biblioteca de soporte y en xml s deberías usar:

 <android.support.v7.widget.GridLayout ... > 

en lugar de

 <GridLayout ... > 

Puede restringir edittext a una sola línea.

 <EditText ... android:singleLine="true" android:lines="1" android:maxLines="1" android:hint="to"></EditText> 

Definitivamente extraño. ¿Qué sucede si se limita el ancho del EditText a "match_parent" en lugar de "wrap_content" (que debería limitar su ancho horizontal dentro de la celda de la cuadrícula)?

es decir

  <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_column="1" android:layout_row="1" android:hint="username" android:textColor="?android:attr/textColorPrimary" android:textSize="24sp" /> 

O, alternativamente, dar a su EditText un margen derecho para tratar de empujar ese borde de la mano derecha en un poco? p.ej

 android:layout_marginRight="20dp" 

Y ver si eso hace una diferencia?

Esta respuesta me pareció útil. También, la respuesta de paulina_glab de usar <android.support.v7.widget.GridLayout lugar de solo <GridLayout – gracias!

En particular, estos atributos en cada celda:

 android:layout_width="0dp" app:layout_columnSpan="1" app:layout_columnWeight="1" app:layout_rowSpan="1" 

Espero eso ayude.

  • En Android, ¿cómo puedo mantener verticalSpacing siempre igual a la horizontalSpacing en GridView?
  • Cómo agregar el diseño personalizado a Arrayadapter?
  • El botón onclick dentro del fragmento no funciona
  • Flotar vistas para que no ocupen espacio en el diseño
  • ¿Tenemos alguna herramienta para convertir el diseño xml de Android a archivos .java?
  • Fill_parent no funciona para RelativeLayout en ScrollView
  • Cómo establecer algunas imeOptions mediante programación
  • Android: agrega un estilo a la barra de acciones en una actividad
  • Disposición relativa. Entre 2 artículos
  • ¿Cómo hacer textView envolver su contenido multilínea exactamente?
  • ¿Cómo puedo hacer que mi Android SwipeableCardViews se parezca más a la aplicación de correo de IOS 7 (desliza para mostrar los botones)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.