关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点
2015-01-21 12:02
323 查看
今天发现一个问题。listView的item点击以后进入到下一个页面,下个页面有个返回按钮,直接返回回去以后点击事件不能触发,滑动或者重新打开这个listView,就可以达到原来的效果。后来发现是因为所在的整个页面失去焦点。
解决的基本思想就是返回的时候让view重新的获取焦点。android自带了一个方法requestFocusFromTouch。在返回的时候用对应的view来调用这个方法即可。如果是在Activity中的话则写在onresume()中就可以了。
还有一总情况,如果listView的adapter中不只是简单的文字显示,比如说还有ImageButton,那么ImageButton会抢掉listView的item的焦点。导致item不能获取到焦点。因为自定义ListViewItem有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了,也就会响应onItemClickListener中的onItemClick()方法,然而将ListView的Item
Layout的子控件focusable属性设置为false有点繁琐,我们可以通过对Item Layout的根控件设置其android:descendantFocusability=”blocksDescendants”即可,这样Item Layout就屏蔽了所有子控件获取Focus的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性了,如此就可以顺利的响应onItemClickListener中的onItemClick()方法了。
所以总结一下,最简单的解决方法就是在ListView的Item选项的布局文件根上加上android:descendantFocusability=”blocksDescendants”就可以了。
原创地址 http://www.cnblogs.com/daxin/p/3519824.html
解决的基本思想就是返回的时候让view重新的获取焦点。android自带了一个方法requestFocusFromTouch。在返回的时候用对应的view来调用这个方法即可。如果是在Activity中的话则写在onresume()中就可以了。
还有一总情况,如果listView的adapter中不只是简单的文字显示,比如说还有ImageButton,那么ImageButton会抢掉listView的item的焦点。导致item不能获取到焦点。因为自定义ListViewItem有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了,也就会响应onItemClickListener中的onItemClick()方法,然而将ListView的Item
Layout的子控件focusable属性设置为false有点繁琐,我们可以通过对Item Layout的根控件设置其android:descendantFocusability=”blocksDescendants”即可,这样Item Layout就屏蔽了所有子控件获取Focus的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性了,如此就可以顺利的响应onItemClickListener中的onItemClick()方法了。
所以总结一下,最简单的解决方法就是在ListView的Item选项的布局文件根上加上android:descendantFocusability=”blocksDescendants”就可以了。
原创地址 http://www.cnblogs.com/daxin/p/3519824.html
相关文章推荐
- 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点
- 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点
- android关于listView的item失去焦点不能点击
- 关于listView的item失去焦点不能点击
- 关于listView的item失去焦点不能点击
- 关于ListView的item中包含Button或Checkbox时导致item无法点击问题
- 关于listView的item失去焦点不能点击
- 【android】listView的item失去焦点不能点击
- 一般情况下ListView中的 item点击事件和 item 中的Button按钮点击事件 同时需要时,就会出现Button抢占了item的焦距问题,导致ListView中的item点击事件无效,解决
- listView的item失去焦点不能点击
- android中ListView点击和ListView的item里面的button或ImageView不能同时生效的解决
- 关于ListView中含有CheckBox,Button等控件失去焦点的解决办法
- ListView包含Button,导致ListView itemclick无效的问题
- windows phone中点击ApplicatonBarIconButton不能使TextBox失去焦点的问题(涉及到Twoway绑定)
- listview的子布局如果有HorizontalScrollView、CheckBox 、button,可能会导致onListItemClick点击事件失效。
- android中ListView点击和ListView的item里面的button或ImageView不能同时生效的解决
- 【Android】 解决listview和BaseAdapter配合因加入button导致整个item点击失效
- android中ListView点击和ListView的item里面的button或ImageView不能同时生效的解决
- GridView, ListView的item中嵌入button或其他view导致item点击失效的研究
- android中ListView点击和ListView的item里面的button或ImageView不能同时生效的解决