android - studio - Diseño de cuadrícula vs. Diseño de tabla
tablas dinamicas en android studio (7)
Las configuraciones de TableLayout son normalmente sencillas de acomodar, ya que GridLayout admite la extensión de filas y columnas. TableRows se puede eliminar, ya que GridLayout no los requiere. Para la misma interfaz de usuario, un GridLayout generalmente será más rápido y tomará menos memoria que un TableLayout.
TableLayout es compatible con todas las versiones de Android, mientras que GridLayout requiere nivel 11 (Android ICS 4.0) o superior, pero se puede agregar fácilmente a través de support librarry v7 para soportar el nivel 7 (Android 2.1) o superior
Estoy trabajando en una aplicación para Android de motor de reservas, como un sistema de reserva de líneas aéreas. Para buscar el contenido de, por ejemplo, todas las aerolíneas disponibles específicas para una búsqueda de pasajeros, esto se muestra en la pantalla del móvil.
¿Cuál de ellos, un diseño de tabla o un diseño de cuadrícula, será efectivo teniendo en cuenta el tiempo de carga de la pantalla, el consumo de memoria del sistema y las características adicionales?
Creo que GridView
debería funcionar mejor porque está implementado con el reciclaje de vistas y productos heredados de AbsListView
. GridView
es más difícil de implementar porque debes usarlo con Adapter
pero funcionará con eficacia si tienes muchas vistas pesadas para cargar, como imágenes
Creo que un TableLayout sería más fácil de usar. Para un GridLayout necesita construir adaptadores personalizados y, por lo tanto, uno que resulte en una aplicación más complicada.
En cuanto a diferentes tamaños de pantalla, un GridLayout elegirá un buen número de columnas y filas por sí mismo de acuerdo con el contenido y será más flexible con la adición de elementos.
Además, GridLayout será más flexible, pero es un trabajo más por hacer.
Desde Android 4.0, existe algo así como un GridLayout . GridLayout siempre es preferible a TableLayout. Proporciona todo lo que ya tiene en TableLayout, y puede reemplazar otros diseños también.
Parece bastante genial, y parece que Google desea que sea tan popular como el LinearLayout (según sus videos de Android 4.0).
EDITAR: si tiene que mostrar muchos elementos, considere usar RecyclerView con GridLayoutManager. Esto puede ayudar en términos de uso de memoria y CPU.
En diseños de cuadrícula, los componentes se pueden establecer automáticamente en la vista tomando numcolumns = "autofit". Aquí no tenemos necesidad de establecer cuántas filas y columnas requerimos, pero en el diseño de la tabla, no tenemos ese tipo de opción y tenemos que establecer cuántas filas y columnas requerimos. En el diseño de la tabla, no podemos insertar más de 1 elemento en una fila sin usar el diseño relativo
Esta es una buena presentación de GridLayout que también describe las diferencias en comparación con TableLayout: http://blog.stylingandroid.com/archives/669
Sin embargo, una de las diferencias más importantes es que solo está disponible en ICS (Ice Cream Sandwich) y más reciente. Esto actualmente significa menos del 30% de la cuota de mercado, por lo que para la mayoría de los desarrolladores la respuesta sería: espere unos años antes de usar GridLayout. YMMV por supuesto.
** EDITAR: esta línea era correcta cuando se escribió esta respuesta, pero ya no se aplica al 99.9% de todos los dispositivos Android: There is no GridLayout in the Android API.
**
(Nota: A partir del nivel 14 de la API, finalmente aparece GridLayout; consulte las respuestas a continuación.) Además, la biblioteca de soporte de V7 agrega soporte de GridLayout a API 7. Sin embargo, la descripción de esta respuesta de GridView sigue siendo precisa y muy bien definida.
Si te refieres a GridView, TableLayout y GridView son cosas completamente diferentes.
Un GridView es básicamente como un ListView, pero cuyos elementos están dispuestos en una cuadrícula estricta. Está conectado a un Adaptador y recupera las vistas desde el Adaptador a través del cual el usuario se desplaza. Todos los elementos en la cuadrícula deben ser del mismo tamaño. El usuario puede mover un selector visible a través de cada elemento: el objetivo de un GridLayout es mostrar los datos de un Adaptador y permitir que el usuario navegue y seleccione cada uno de los elementos mostrados. La única diferencia de un ListView es que los elementos se colocan en una cuadrícula en lugar de en una lista vertical.
TableLayout es solo un administrador de diseño, algo así como una tabla en HTML. No hace ningún desplazamiento; para tener algo que se desplaza debe poner el TableLayout en un ScrollView. Esto implica que todos los datos que se muestran deben rellenarse en TableLayout por adelantado, por lo que ScrollView sabe el espacio total en el que se desplazará. Tampoco proporciona directamente la selección o interacción de "elementos", porque un TableLayout no tiene elementos, es solo un administrador de diseño.
En realidad, no proporcionó información útil suficiente sobre lo que realmente está tratando de hacer para que alguien le recomiende qué usar. Depende mucho de lo que específicamente quieras.
Me refiero a lo que será útil en términos de "características adicionales"?!? Bueno, ¿qué características estás buscando?
De todos modos, como regla general, una vista basada en el adaptador se debe utilizar para cualquier situación en la que tenga una cantidad significativa de datos que el usuario está desplazando vista; estos son mucho más eficientes que tener que crear toda la jerarquía de vista por adelantado para mostrar sus datos. También son los únicos que proporcionan automáticamente la selección por elemento y otras características similares. La vista principal para esto que utilizan las aplicaciones es ListView, aunque también se puede usar GridView.