У меня есть GridView
в моем макете, который должен занимать столько места, сколько доступно (все остальные элементы макета имеют фиксированный размер).Как установить количество столбцов в GridView в соответствии с минимальной и максимальной шириной столбца?
Я хочу, чтобы все ячейки Views
в ячейках GridView
занимали как можно большую ширину, то есть не оставляли дополнительного пространства, кроме интервала, определенного GridView
.
Я хочу, чтобы число столбцов GridView
будет автоматически определяться следующими ограничениями:
- Минимальная ширина столбца должна быть
200dp
(если вид сетки сам не меньше) - Максимальный столбец ширина должна быть
300dp
- Я всегда хочу, чтобы максимальное количество столбцов соответствовало этим ограничениям.
Для этого андроида необходимо определить правильное количество столбцов как-то отдельно (auto_fit
по умолчанию равно 2, если ширина ячейки неизвестна). Проблема в том, что моя реализация ListAdapter
, доставляющая ячейку Views
с getView()
, должна доставлять виды нужного размера до того, как будет известна ширина сетки (parent.getWidth()
вернет 0 изначально).
Таким образом, на этапе компоновки ширина вида сетки еще не известна, но все же вид сетки уже хочет знать количество столбцов. Однако для определения количества столбцов в соответствии с моими ограничениями я должен знать ширину сетки (и поскольку она все равно занимает все свободное пространство, это должно быть возможно знать).
Также можно установить минимальную ширину и высоту на Views
, но это, похоже, не помогает с шириной столбцов сетки.
Итак, как можно программно выполнить все эти ограничения?