2012-09-08 16 views
6

Me gustaría construir un widget de cuadrícula heterogéneo en Android como el que se usa en aplicaciones como Google+ para tabletas o Pinterest. No puedo encontrar ningún tutorial y me parece particularmente difícil.Google+ widget de cuadrícula de Android para el tutorial de tableta

enter image description here

Desafortunadamente GridView sólo puede tener células del mismo tamaño, mientras que quiero lograr diferentes tamaños células. ¿Puedes indicarme algún buen tutorial? Solo sé que tengo que extender AbsListView.

Respuesta

0

Dependiendo de la variable de alturas de los ítems son, usted tiene algunas opciones:

  1. Si usted está buscando para hacer una GridView con muchas variaciones de alturas (por ejemplo Pinterest) debe jugar con StaggeredGridView - hasta donde puedo decir, es la mejor solución de código abierto que hay ahora.

  2. En la imagen informados, parece como si hay filas de padres con niños altura variable - este es un problema un poco más fácil de resolver, y pueden ser imitados por el uso de un ol regular' ListView y una subclase de BaseAdapter. Escribir el código para esto es demasiado complicado para una respuesta SO, pero le daré una descripción general de cómo podría lograr este efecto.

    • El BaseAdapter debe determinar el esbozo del diseño de cada fila antes de tiempo tal que pueda informar a la vista de lista cuántas filas se requerirá - se necesita para anular getCount().
    • En getView() de su adaptador, inflará un solo LinearLayout (o tal vez use convertView si ha sido reciclado) y agregará tantos niños (una vez más, más LinearLayouts) como necesitará para el ancho del dispositivo (debe esto en tiempo de ejecución, a menos que desee simplemente crear una versión de teléfono y tableta).
    • Cada niño LinearLayout agregado a la fila debe establecerse en weight = 1 de manera que se extienda a todo el ancho de la fila principal. En la captura de pantalla que ha publicado, hay 3 columnas (el tercer ID cortado).
    • Cada niño LinearLayout que acaba de agregar a la fila representa una columna. ¡Debes establecer sus orientaciones en vertical, siendo como son columnas!
    • Dentro de cada columna, si agregara un solo hijo, tendría una vista de cuadrícula.
    • Si desea lograr el efecto anterior, puede agregar más elementos a cada columna.
    • Por ejemplo, la fila 1, columna 1 tiene un hijo grande. Las columnas 2 y 3 en la fila 1 tienen 2 niños de media altura.
+0

Estoy usando un StaggeredGridView modificado y funciona. – Matroska

Cuestiones relacionadas