Проблемы с прокруткой в ​​GridView в Android - PullRequest
25 голосов
/ 01 июня 2010

У меня странные проблемы с прокруткой в ​​моем довольно простом GridView. Каждый элемент в Grid - это просто ImageView и TextView. Само действие является просто селектором приложений. Похоже, что это грубая версия основной панели приложений в Android.

Проблема в том, что, потратив несколько раз прокрутку моего вида, это неизбежно позволит мне продолжить прокрутку за верхним рядом значков на пустой экран, и полоса прокрутки исчезнет, ​​оставив меня в тупике.

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

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

Это мое первое приложение для Android, выходящее за рамки обычного Hello World, поэтому, скорее всего, я что-то испортил в своих файлах макетов. Я также понимаю, что это, вероятно, довольно запутанное описание, поэтому я надеюсь, что кто-то испытал это, и мои поисковые возможности просто не смогли его найти.

Я могу опубликовать файлы макета или другой код, если кто-то посчитает это полезным.

О, и программа построена на 1.5, но работает на 2.2 (в любом состоянии 2.2, которое было на прошлой неделе) на моем телефоне. У меня недостаточно приложений для проверки этого на эмуляторе, но, возможно, кто-то может настроить что-то, если кто-то посчитает это необходимым.

Заранее благодарим за любую помощь по этому вопросу.

Ответы [ 4 ]

10 голосов
/ 19 апреля 2013

У меня была такая же проблема, но я публикую только на GridView ImageView, так что ответ Пенгвана мне не помог. Я нашел объяснение этой ошибке https://code.google.com/p/android/issues/detail?id=16218

Проблема в том, что GridView в настоящее время не обрабатывает элементы с различной высотой.

Мое решение состоит в том, чтобы использовать точно указанный layout_height одинаковый для всех элементов GridView.

5 голосов
/ 11 мая 2011

я решил: по ссылке GridView не может показать изображение вы можете попробовать

1 голос
/ 28 апреля 2011

Похоже, что если вы пару раз прокрутите нижнюю часть GridView и вернетесь назад очень быстро, вы в конечном итоге заметите, что элементы представления сместились на одно место влево от того места, где они изначально находились. Когда это происходит, вы можете полностью прокрутить верхнюю часть GridView. Когда вы достигнете верхней части списка, элемент 0 не будет отображаться, а элемент 1 будет на его месте, а над этой строкой будет только чернота.

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

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

Сейчас я работаю с Android 2.3.3.

0 голосов
/ 06 августа 2014

Я только что столкнулся с точно такой же проблемой - у меня есть сетка изображений, которые имеют разную высоту. Прочитав документацию для разработчиков Android по GridView, GridView.LayoutParams и GridLayout, я сделал две вещи, которые решили мою проблему:

  1. найдите самое высокое изображение в каждой строке и сохраните высоту на карте строки -> rowHeight. Каждое загружаемое изображение содержит информацию о ширине и высоте, так что это легко сделать, переопределив метод addAll (items) моего адаптера.

  2. в getView () я создаю GridView.LayoutParams (MATCH_PARENT, getRowHeight (position)), который устанавливает для каждого элемента сетки максимальную высоту строки для конкретной строки.

  3. обернуть мой ImageView внутри LinearLayout. Я пробовал другой макет, но LinearLayout работает. Установите android: scaleType = "fitCenter" и android: AdjustViewBounds = "true" для представления изображения.

После 3-х шагов я наконец-то заставил сетку выглядеть правильно, у них разная высота, и проблем с прокруткой нет.

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