android - examples - GridLayout escupiendo registros de depuración de "restricción inconsistente"
gridlayout columns (2)
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 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 se etiquetaran como 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 rutas más cortas de una sola fuente en un dígrafo, para el cual el algoritmo Bellman-Ford de O(n^2)
la solución general más comúnmente utilizada.
Tiene un método de solve
que utiliza la programación lineal para garantizar la consistencia de las restricciones que debe satisfacer, 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 satisfacerse y eliminarlo.
He estado usando GridLayout durante unas semanas y me he dado cuenta de 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 buscado en la fuente de GridLayout para descubrir la posible razón de por qué los "contraints son inconsistentes", pero no he podido resolverlo.
El hecho de que aparezcan estos mensajes, ¿es esto algo de lo que debería preocuparme? No veo ningún problema con la forma en que se presentan las cosas. Tengo un GridLayout en Fragmentos que se cargan como las páginas en un ViewPager, por lo que, a medida que el usuario se desplaza entre las páginas, veo el resultado anterior en LogCat varias veces.
Tuve el mismo problema y encontré que no pude agregar el 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 se 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 a ti también.