GridView, ListView的item中嵌入button或其他view导致item点击失效的研究
2014-08-29 17:19
411 查看
GridView, ListView的item中如果嵌入了button会导致item点击失效。
原因是:
AbsListView.java 中的代码:
!child.hasFocusable()
如果无焦点才会响应onItemClickListener中的内容。
所以必须保证子类无焦点。
方法1. item容器调用 setDescendantFocusability( FOCUS_BLOCK_DESCENDANTS); button 调用setFocusable(false)
方法2. xml文件中 配置 android:descendantFocusability= "blocksDescendants"
button 设置 android:focusable = "false"
spannableString 点击失效的处理方法:
http://stackoverflow.com/questions/8558732/listview-textview-with-linkmovementmethod-makes-list-item-unclickable
原因是:
AbsListView.java 中的代码:
private void onTouchUp(MotionEvent ev) { switch (mTouchMode) { case TOUCH_MODE_DOWN: case TOUCH_MODE_TAP: case TOUCH_MODE_DONE_WAITING: final int motionPosition = mMotionPosition; final View child = getChildAt(motionPosition - mFirstPosition); if (child != null) { if (mTouchMode != TOUCH_MODE_DOWN) { child.setPressed(false); } final float x = ev.getX(); final boolean inList = x > mListPadding.left && x < getWidth() - mListPadding.right; if (inList && !child.hasFocusable()) { if (mPerformClick == null) { mPerformClick = new PerformClick(); } final AbsListView.PerformClick performClick = mPerformClick; performClick.mClickMotionPosition = motionPosition; performClick.rememberWindowAttachCount(); mResurrectToPosition = motionPosition; ... }在响应onItemClickListener之前会先判断子view是否有焦点。
!child.hasFocusable()
如果无焦点才会响应onItemClickListener中的内容。
所以必须保证子类无焦点。
方法1. item容器调用 setDescendantFocusability( FOCUS_BLOCK_DESCENDANTS); button 调用setFocusable(false)
方法2. xml文件中 配置 android:descendantFocusability= "blocksDescendants"
button 设置 android:focusable = "false"
spannableString 点击失效的处理方法:
http://stackoverflow.com/questions/8558732/listview-textview-with-linkmovementmethod-makes-list-item-unclickable
相关文章推荐
- listview的子布局如果有HorizontalScrollView、CheckBox 、button,可能会导致onListItemClick点击事件失效。
- 【Android】 解决listview和BaseAdapter配合因加入button导致整个item点击失效
- 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点
- 解决 scrollview + expandlistview + gridview 点击时间失效的问题
- Android中ListView(gridview)的item中有button等子点击控件时不能响应点击事件的原因
- ListView item中有button或EditText时 点击事件失效问题的解决
- android中ListView点击和ListView的item里面的button或ImageView不能同时生效的解决
- listview中增加checkbox导致item点击事件失效
- ListView的item中有button ImageButton CheckBox EditText等时 点击事件失效问题的解决
- 关于ListView的item中包含Button或Checkbox时导致item无法点击问题
- ListView的每个Item项都有两个Button(男,女),和两个ImageView(绿,红),点击button,实现ImageView的改变,并且listview不错乱
- Android中ListView点击和ListView的item里面的Button或ImageView不能同时生效问题的解决
- ListView与GridView的item中使用ImageView的android:scaleType属性失效问题
- 当GridView嵌入ListView后,获取不到Listview的Item 点击事件
- 【解决】Listview 嵌套ListView/ScrollView 导致item点击无效
- android中ListView点击和ListView的item里面的button或ImageView不能同时生效的解决
- 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点
- ListView中含有CheckBox或者Button等控件,导致item点击无效的原因。
- Android 点击ListView(或GridView)的一个item,使其里面textview变色,点击另一个这个恢复原来颜色
- ListView点击事件失效(item里面有button按钮控件)解决方法