Проблемы прокрутки с GridView в Android
У меня возникли странные проблемы с прокруткой в моем довольно простом GridView. Каждый элемент в сетке-это просто ImageView и TextView. Сама активность - это просто селектор приложений. Похоже на черновой вариант основной лоток приложения в Android.
Проблема в том, что после того, как я несколько раз прокрутил свой вид, он неизбежно позволит мне продолжить прокрутку мимо верхнего ряда иконок, к пустому экрану, и полоса прокрутки исчезнет, оставив меня застрявшим.
Это это не происходит каждый раз, когда я иду в верхнюю часть представления, только иногда, и обычно только после некоторого чрезмерного прокрутки.
Если мне случится заметить проблему и поймать ее до того, как верхняя строка исчезнет с нижней части экрана, я обычно могу прокрутить назад вид и обнаружить некоторые отсутствующие значки. В сетке есть пустые места, и я могу только предположить, что эти значки были перемещены в какое-то странное положение, которое позволяет просмотру прокручиваться мимо верхней части.
Это мое первое приложение для Android за пределами базового Hello World, так что, скорее всего, я просто что-то напортачил в своих файлах макета. Я также понимаю, что это, вероятно, довольно запутанное описание, поэтому я надеюсь, что кто-то испытал это, и мои поисковые способности просто не смогли найти его.
Я могу опубликовать свои файлы макета или другой код, если кто-то считает, что это полезно.
О, и программа построена против 1.5, но работает на 2.2 (независимо от того, в каком состоянии 2.2 это было, что выскользнуло последним неделю) на моем телефоне. У меня нет достаточного количества приложений, чтобы проверить это на эмуляторе, но, вероятно, можно было бы что-то настроить, если бы кто-то посчитал это необходимым.
Заранее спасибо за любую помощь по этому вопросу.
4 ответов:
Я решил ее: в ссылке GridView не может показать изображение Вы можете попробовать
У меня была та же проблема, но я постил в
GridViewтолькоImageView, поэтому ответ пенгванга не помог мне. Я нашел объяснение этой ошибки https://code.google.com/p/android/issues/detail?id=16218Проблема в том, что GridView в настоящее время не обрабатывает элементы с разной высотой.
Мое решение состоит в том, чтобы использовать точно определенные
layout_heightодинаковые для всехGridViewэлементов.
Похоже, что если вы прокрутили нижнюю часть GridView и обратно очень быстро пару раз, вы в конечном итоге заметите, что элементы вида смещаются на одно место "влево" от того места, где они первоначально были. Когда это произойдет, вы можете прокрутить весь путь от верхней части GridView. Когда вы достигнете вершины списка, пункт 0 не будет отображаться, имея пункт 1 на своем месте и ничего, кроме черноты над этой строкой.
Щелчок по любому элементу в этой ситуации сбрасывает список, и все возвращается в нормальное состояние.
Это, должно быть, ошибка. Это очень воспроизводимо, и я не думаю, что что-то, что я делаю, вызывает путаницу. На этом этапе добавление адаптера в список остановилось.
Сейчас я работаю с Android 2.3.3.
Я только что столкнулся с этой самой проблемой-у меня есть сетка изображений, которые имеют разную высоту. После прочтения документа разработчика Android на GridView, GridView.LayoutParams и GridLayout, я сделал две вещи, которые исправляют мою проблему:
Найдите самое высокое изображение в каждой строке и сохраните высоту на карте строки -> rowHeight. Каждое изображение, которое я загружаю, имеет информацию о ширине и высоте, поэтому это легко сделать, переопределив метод addAll(items) моего адаптера.
В getView () я создаю GridView.LayoutParams (MATCH_PARENT, getRowHeight (position)), который устанавливает каждому элементу сетки максимальную высоту строки для его конкретной строки.
Оберните мой ImageView в LinearLayout. Я пробовал другой макет, но LinearLayout-это тот, который работает. Установите android: scaleType= "fitCenter"и android:adjustViewBounds=" true " для представления изображения.
После выше 3 шагов я, наконец, получил сетку, чтобы выглядеть правильно, они имеют разные высоты, и нет проблем с прокруткой.
Comments