2012-05-02 11 views
21

He estado usando GridLayout durante unas semanas y ahora me he dado cuenta que cuando llamoGridLayout escupir "restricción" inconsistente registros de nivel de depuración

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 incompatibles", pero no he sido capaz de entenderlo.

El hecho de que estos mensajes estén apareciendo, ¿es algo que debería preocuparme? No veo ningún problema con la forma en que se están diseñando las cosas. Tengo un GridLayout en Fragmentos que se cargan como páginas en un ViewPager, así que mientras el usuario se desplaza entre las páginas, veo el resultado anterior en LogCat varias veces.

+0

Espero que te sea útil https://stackoverflow.com/questions/37997670/gridlayout-vertical-horizontal-constraints-are-inconsistent?noredirect=1&lq=1 –

Respuesta

4

Tuve el mismo problema y encontré que olvidé 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> 

luego cambió el prefijo de atributos utilizados por GridLayout compatibilidad con XML de nombres también:

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

y ayudó ... Espero que le ayude también.

+0

Intenté esto y sigo teniendo el mismo problema . No estoy usando la biblioteca de compatibilidad, esta podría ser la diferencia. Gracias. – mdupls

10

Desde el GridLayout fuente:

variante

Bellman-Ford - modificado para reducir el tiempo típico de funcionamiento O(N^2)-O(N)

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

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

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

Por ejemplo, si las variables fueron etiquetados en lugar x, y, z podríamos tener:

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

Este es un caso especial del problema de programación lineal que es, a su vez, equivalente a la de un solo fuente el problema de rutas más cortas en un dígrafo, para el cual el algoritmo Bellman-Ford O(n^2) es la solución general más comúnmente utilizada.

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

+4

Averiguar qué restricción es el verdadero desafío ... –

Cuestiones relacionadas