当然大家都知道listview item上有类似于Button能默认获取到焦点的控件时候,该listview 的onitemOnclick()事件是不做响应的额,现在说下我理解的原因:
// 响应条件分析:
1. 条件不具备 : listview 的onitemOnclick()能够响应的条件就是这行能够获取到焦点,从点击之后,该行颜色是修改的可以看出来这个问题,,,当他上面子控件获取到焦点时候,他就不能获取到焦点了,所以就不能响应这个item的点击响应事件了。
//事件分发角度
2. 不处理 : 在Android控件中,交互事件都是沿着控件树自顶向下传播的。当位于控件上层的父控件收到交互事件后,会先行判断该事件的目标控件对象,如果该事件正是自己所需要的,则会截获事件进行处理,否则就尝试将该事件向下分发给对应的子控件并递推的逐级向下传播事件,直至该事件被处理或截取。 这个控件没有获取到焦点,不能拦截处理事件,就会向下分发,这样子控件可以获取到焦点,这样就要可以处理事件,直至截取。