Возможно заполнить «решетчатый» вид столбцом, а не строкой - PullRequest
4 голосов
/ 18 марта 2011

Я использую GridView, чтобы показать список телеканалов, используя SimpleCursorAdapter для получения названия канала из БД. Поведение по умолчанию - заполнить сетку слева -> справа, сверху -> снизу как в ...

1 2
3 4
5 6

GridView фиксируется с 2 столбцами и, очевидно, прокручивается по вертикали, если он превышает вертикальные границы своего родителя.

У меня есть пользователь, который предпочел бы, чтобы каждый столбец заполнялся сверху -> снизу, прежде чем переходить к следующему, так эффективно, что я смотрю на фиксированное количество строк с сеткой некоторого вида, прокручиваемой горизонтально, пример с 9 строками (фиксированная), без вертикальной прокрутки, с видимыми 2 столбцами и горизонтальной прокруткой ...

1 10 | 19
2 11 | 20
3 12 | 21
4 13 | 22
5 14 | 23  <-> 19-27 hidden, but columns scrollable horizontally
6 15 | 24
7 16 | 25
8 17 | 26
9 18 | 27

Я понимаю, что сам GridView не может сделать это, но существует ли существующее представление, которое будет вести себя так? Если нет, то какой будет лучший подход к созданию пользовательского представления?

Спасибо.

1 Ответ

3 голосов
/ 18 марта 2011

Вы не можете сделать это с GridView.Для этого вам нужно создать собственный вид.

Редактировать - если вы знаете, насколько велики ваши элементы сетки, вы можете срезать некоторые углы.GridView сложен в основном потому, что он работает с элементами любого размера и загружает их динамически.Для вас может быть проще:

  1. Создать HorizontalScrollView с горизонтальной LinearLayout внутри.
  2. Определение того, сколько строк вашего элемента уместится на экране.Назовите это rows.
  3. while у вас все еще есть элементы, которые вам нужно расположить:
    1. Создайте вертикаль LinearLayout, добавив к ней rows или меньше элементов.
    2. Добавьте вашу новую вертикаль LinearLayout к горизонтальной.

Есть некоторые недостатки по сравнению с тем, что "горизонтальный GridView" даст вам:

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

Перевернутые стороны:

  • Это очень легко реализовать.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...