要做一个观影券的页面,使用gridview做展示。如下图
本以为很简单的一件事情,但是开发过程中,却遇到了难得一见的问题--Gridview居然无法上下滚动了。网上查了一些资料,好像没有人遇到过类似的问题。
但是项目中另外一个页面却可以使用,最后仔细对比,查找两边的差异,发现引起问题的原因是Gridview上方的一个ImageButton,这个Button可以获得焦点,导致Gridview中的item中焦点异常。
Gridview的焦点只会分配给可见item,那些不可见的item无法获得焦点,因而就无法滚动了。
将Gridview上方抢焦点的组件focusable设置为false就可以了。
Gridview的Item的OnItemClickListener也存在同样的问题,当Item中含有可以Button组件时,会导致OnItemClickListener的OnItemClick无效。
要想查明问题的原因,估计需要看源码了。