用gridview进行加载子项,想要用imagebutton中点击前,点击后的效果。然后会发现,imagebutton的事件和gridview选择子项的事件会有冲突的。
方法1:
通过设置xml的属性,进行改变:关键在于这个属性:android:descendantFocusability和android:focusable="false"
而android:descendantFocusability有三个属性值:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html
只需要在gridview的子项item.xml的根布局,设置:android:descendantFocusability=”blocksDescendants”即可。
实例demo,xml详解
http://blog.youkuaiyun.com/iamzmq007/article/details/7555385
你会发现,只有当点击了子项item后,点击imagebutton才有相应。如果先点击imagebutton的话是没有响应的。所以最好的办法是用BaseAdapter,请看方法2
方法2:
最有效的方法就是实现BaseAdapter,进行自定义改变,并且还可以优化性能,提高效率。
这里有两篇关于BaseAdapter的文章: