有时候,程序中 某个按钮需要两次点击才能正常相应定义好的点击逻辑,甚至点完某个按钮后点击其他所有的空间都需要点击两次才能正常响应,,,
这是怎么回事?
1.可能是 你定义的布局中有 button,checkbox等,他们把焦点拿走了,导致你的控件第一次点击是获取焦点,第二次才是响应点击
这时候就可以使用descendantFocusability来解决啦,API描述如下:
android:descendantFocusability
Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.
Must be one of the following constant values.
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了
2.可能是你拿住了事件,并没有释放,如 写了某个控件的onTouch,action_down,action_up没有处理好,导致 焦点没释放,则,抬起手指时,点击其他控件都需要点击两次,最好抛给父类处理,曾经让我纠结很久的问题