GridLayout escupiendo "coherencia inconsistente" registros de nivel de depuración

He estado usando GridLayout por unas pocas semanas y he notado que cuando llamo

gridLayout.requestLayout() 

Escupe el siguiente mensaje de nivel de depuración en LogCat:

 D/android.widget.GridLayout(14048): horizontal constraints: x5 - x0 > 1115, x5 - x4 < 221, x4 - x3 < 221, x3 - x2 < 221, x2 - x1 < 221, x1 - x0 < 221 are inconsistent; permanently removing: x5 - x4 < 221. 

He mirado a través de la fuente de GridLayout para tratar de averiguar la posible razón de por qué los "contraints son inconsistentes", pero no he sido capaz de averiguarlo.

El hecho de que estos mensajes están apareciendo – es algo que me debería preocupar? No veo ningún problema con la forma en que las cosas están siendo establecidas. Tengo un GridLayout en Fragmentos que se cargan como las páginas en un ViewPager así que mientras que el usuario se desplaza entre las páginas veo la salida antedicha en LogCat varias veces.

De la fuente GridLayout :

Variante de Bellman-Ford – modificada para reducir el tiempo de funcionamiento típico de O(N^2) a O(N)

GridLayout convierte sus requerimientos en un sistema de restricciones lineales de la forma:

 x[i] - x[j] < a[k] 

Donde las x[i] son variables y las a[k] son constantes.

Por ejemplo, si las variables fueron etiquetadas x , y , z podríamos tener:

 x - y < 17 y - z < 23 z - x < 42 

Este es un caso especial del problema de la Programación Lineal que, a su vez, es equivalente al problema de las trayectorias más cortas de una fuente en un digrafo, para el cual el algoritmo de Bellman-Ford O(n^2) la solución general más comúnmente utilizada.

Posee un método de solve que utiliza la programación lineal para garantizar la coherencia de las restricciones que tiene que satisfacer, dada su configuración. Probablemente puede mejorar el rendimiento del diseño si descubre qué configuración está asociada con la restricción x5 - x4 < 221 y quítela. Entonces el solucionador no tendrá que resolver que no puede ser satisfecho y eliminarlo por sí mismo.

Tuve el mismo problema y descubrí que no podía agregar espacio de nombres XML. Corregido de esta manera:

 <android.support.v7.widget.GridLayout xmlns:grid="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> ... </android.support.v7.widget.GridLayout> 

A continuación, cambió el prefijo de los atributos utilizados por la compatibilidad GridLayout con el espacio de nombres XML también:

 <ImageButton android:id="@+id/btnSentence" grid:layout_row="0" grid:layout_column="0" ... /> 

Y ayudó … Espero que te ayude también.

  • Margen de Android entre los botones del diseño de cuadrícula
  • ¿Cómo puedo incluir la biblioteca de soporte de Android GridLayout en mi proyecto de Android?
  • La alineación no es correcta al agregar vista dinámicamente a GridLayout
  • GridLayout dando errores, aplastando la aplicación
  • Diseño de cuadrícula vs. Diseño de la tabla
  • Android - WrapPanel equivalente?
  • Gridlayout + ScrollView
  • IntelliJ: Obtener trabajo de GridLayout
  • GridLayout de la biblioteca de soporte no muestra 2 filas en Android 2, onChildVisibilityChanged Error
  • Creación de una cuadrícula como diseño en Android
  • Android GridLayout y EditText
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.