我在非常简单的GridView中遇到了奇怪的滚动问题。 Grid中的每个项目都只是一个ImageView和一个TextView。活动本身就是一个应用程序选择器。它看起来像是Android中基本App Tray的粗略版本。
问题是,花一些时间通过我的看法滚动之后,就必然让我继续滚动过去的图标顶行,一个空白屏幕,滚动条会消失,我卡住了。
每次我走到视图顶部时都不会发生这种情况,有时只会在经过一些过度滚动之后才会发生。
如果我碰巧注意到这个问题,并抓住它的顶行会消失在屏幕的底部之前,我通常能回到通过视图滚动和发现一些图标丢失。有在网格空的空间,并且我只能假设,这些图标已移动到一些奇怪的位置,其允许所述视图滚过顶部。
这是我在基本的Hello World之外的第一个Android应用程序,所以很可能我在布局文件中搞砸了一些东西。我也意识到,这可能是一个非常令人迷惑的描述,所以我希望有人经历了这一点,我的搜索能力,根本无法找到它。
如果有人认为有用,我可以发布我的布局文件或其他代码。
哦,该程序是针对1.5构建的,但是在我的手机上运行2.2(无论2.2上面的状态是什么状态)。我没有足够的应用程序在模拟器上测试它,但如果有人认为有必要,可能会设置一些东西。
提前感谢您对此问题的任何帮助。
答案 0 :(得分:9)
我有同样的问题,但我只发布GridView
ImageView
,所以彭王的答案对我没有帮助。我找到了这个错误的解释https://code.google.com/p/android/issues/detail?id=16218
问题是GridView目前不处理具有不同高度的项目。
我的解决方案是对所有layout_height
项使用完全相同的GridView
。
答案 1 :(得分:5)
我已经解决了这个问题:在链接GridView cannot show image中,您可以尝试
答案 2 :(得分:1)
似乎如果你滚动GridView的底部并且几次非常快地返回,你最终会注意到视图的元素从它们原来的位置移动到“左”。发生这种情况时,您可以一直滚动到GridView的顶部。当您到达列表顶部时,不会显示第0项,其中第1项就位,并且该行上方只有黑色。
在此情况下单击任何项目会重置列表,一切都恢复正常。
这一定是个bug。它具有高度可重复性,我认为我所做的任何事情都不会造成混乱。此时,添加到列表适配器已停止。
现在我正在使用Android 2.3.3。
答案 3 :(得分:0)
我自己也遇到了同样的问题 - 我有一个不同高度的图像网格。在阅读了关于GridView,GridView.LayoutParams和GridLayout的Android开发人员的文档后,我做了两件事来解决我的问题:
找到每行中最高的图像,并将高度存储在行的地图中 - > rowHeight的。我下载的每个图像都有宽度和高度信息,因此我可以通过覆盖我的适配器的addAll(items)方法来轻松完成。
在getView()中,我创建了一个GridView.LayoutParams(MATCH_PARENT,getRowHeight(position)),它将每个网格项设置为其特定行的最大行高。
将我的ImageView包装在LinearLayout中。我尝试了其他布局,但LinearLayout是有效的。设置android:scaleType =" fitCenter"和android:adjustViewBounds =" true"用于图像视图。
经过上述3个步骤后,我终于让网格看起来正确,它们有不同的高度,并且没有滚动问题。
答案 4 :(得分:0)
我有一个类似的问题,但可能不太常见,只需稍微滚动一下即可将gridview滚动到末尾,而我根本无法向上滚动。仅当gridview较小时(例如,键盘可见时)才发生这种情况。问题是我用过:
android:paddingBottom="400dp"
android:clipToPadding="false"
使填充物的底部小很多可以解决我的问题。我希望这至少对某人有帮助!