gridView с различными размерами ячеек, стиль интереса

Фон

Вид сетки это класс, который расширяетсяAdapterView Это означает, что он эффективно показывает ячейки в стиле сетки, перерабатывая старые представления, чтобы они отображались как новые, когда пользователь прокручивает их.

Эта проблема

Иногда вам может понадобиться специальный пользовательский интерфейс, напоминающий пользовательский интерфейс Windows Phone Tiles, с ячейками разных размеров друг над другом.

Что-то вроде этого:

AABB
AACC
AADD
AADD

каждая буква представляет часть своей ячейки, поэтому ячейка A имеет размер 2x4, ячейка B и ячейка C занимают 2x1 каждая, а ячейка D - 2x2.

Это может быть даже больше, чем то, где ячейка D закончила немного выше, чем якак показано на рисунке, и прямо под ним есть еще одна ячейка, поэтому конец D и конец A нет необходимо выровнять.

Пример приложения, которое имеет этот стильинтерес

GridView не делаетЯ не могу этого допустить.

На самом деле, каждое решение, которое яу меня есть проблемы. Хотел бы спросить, есть ли другие альтернативы или лучшие решения.

Что я'мы нашли

Есть несколько способов справиться с этой проблемой:

Как класс, который расширяетсяAdapterView Вид сетки имеет возможность иметь тип для каждого элемента (используяBaseAdapter), что позволит вам установить, как расположить ячейку.

Тем не менее, это все еще ограничивает вас, так как вы будете получать ряды предметов, один под другим. Вы должны выровнять их.

Макет сетки это относительно новый макет, и этодовольно гибкий. Google опубликовал хорошую библиотеку совместимости для него, поддерживающую API7 и выше.

Тем не менее, это нене использовать повторное использование представлений, так чтоплохой выбор, если вы хотите показать много вещей.

Если у вас много предметов, вам нужно создать все виды для них.

Библиотека QuiltView - простирается от GridLayout, поэтому в основном имеет ту же проблему, что и он.

StaggeredGridView - выглядит наиболее перспективно, но имеет много ошибок, особенно при смене ориентации. такие ошибки включают в себя пустые ячейки, плохую прокрутку и NPE (редко, но все еще случается). Я'Я также не уверен, поддерживает ли он настроенные ячейки вместо одних только изображений.

другие решения, как упоминаетсяВот .

Вопрос

Кто-нибудь знает другую альтернативу этой проблеме? Может быть, некоторые обходные пути для любого из решений, которые япоказали?

РЕДАКТИРОВАТЬ: Я думаю, что о StaggeredGridView, прокрутка и исключения могут быть решены с помощью обычного ImageView, который вы устанавливаете его размер внутри getView. я думаю, что причина его странной работы заключается в том, что образец обновляет размер изображения после его загрузки из Интернета.

Однако проблема пустых ячеек все еще остается в этой библиотеке. не только это, но их размеры сильно меняются, даже не меняя ориентацию.

РЕДАКТИРОВАТЬ: на данный момент, я думаю, что лучшее решение заключается в использовании,PinterestLikeAdapterView библиотека.

это неУ меня нет проблем, которые я могу найти.

однако, это можетсделать элементы размером более 1 ячейки. Это'Тем не менее, это очень хорошо.

РЕДАКТИРОВАТЬ: к сожалению, это имеет проблемы с notifyDataSetChanged. я'мы сообщили об этомВот.

Ответы на вопрос(3)

Ваш ответ на вопрос