public ImageButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setFocusable(true); }
在listview中(或者ExpandableListview),item的view会被进行特殊的处理,经过convertview能够减小解析xml文件,提升效率。可是若是你本身解析一次,而后用变量保存,那么只有最后一个view才能正常显示,说明了每个item的view都是不一样的实例,这样就注定了每个view事实上是能够添加按钮之类的单独响应事件的。java
有这么几种方法避免Button或者ImageButton抢夺整个item的焦点android
public ImageButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setFocusable(true); }
2. 在item的layout的根viewgroup中设置android:descendantFocusability="blocksDescendants",这个属性也会使其余的view能响应焦点ide
可是在实际开发过程当中,我发现若是是ExpandableLisview的BaseExpandableListAdapter中的isChildSelectable方法覆写以后得返回true,不然也不能响应ItemClickxml
@Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; }