码迷,mamicode.com
首页 > 其他好文 > 详细

GridView 动态修改Item的LayoutParam导致Item的OnClickListener失效

时间:2015-12-12 01:39:45      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

GridView 动态修改Item的LayoutParam导致Item的OnClickListener失效

  项目中为了实现图片的数量以及大小(类似微信图片的单张图片显示,和多张图片显示的大小是不同的)的效果,采用GridView动态修改边界,以及动态修改ImageView的大小的方式。实现效果如下:

单图:

  技术分享

多图

技术分享

到目前为止,没有遇到什么问题,可是,之后就遇到一个问题,就是在ImageView上设置OnClickListener,第0张图片无法点击的问题。

追踪源码,发现一直运行到:

技术分享

这个函数的时候,其他View的点击事件都直接走 handler.post(action),惟独第0张图片,走ViewRoot.getRunQueue().post(action);可见是因为

没有设置mAttachInfo的问题。

然后追踪,为什么没有设置mAttachInfo 的问题。

路劲如下:

  dispatchAttachedToWindow->dispatchAttachedToWindow->addViewInLayout

最后,发现一直处于

技术分享

 attachViewToParent 但是,该child 之前没有被调用过addViewInLayout, 所以没有 mAttachInfo 属性。 至于ViewRoot.getRunQueue().post(action);为什么没有被执行,就不得而知了。

GridView 动态修改Item的LayoutParam导致Item的OnClickListener失效

标签:

原文地址:http://www.cnblogs.com/darkgem/p/5040605.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!