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.

  • Cómo hacer HorizontalScrollView RIGHT a LEFT Scroll android
  • Traducir una vista de un diseño a otro con animación de traducción
  • ListView dentro de LinearLayout no crecerá para mostrar todos los niños
  • Modifique el estilo de los elementos Android en la barra ActionBar
  • Cómo configurar el título de Alert Dialogue
  • ¿Cómo puedo reducir el espaciado entre texto en mi diseño de Android?
  • PercentFrameLayout: Debe proporcionar un atributo layout_width
  • Construir Reproducir Interfaz similar a la música
  • Android TabWidget sin TabHost con acciones personalizadas
  • SDK 5.0 RecyclerView no se puede instanciar
  • Diseño de filas ListView de Android ignorando el relleno
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.