前言
在做IM的时候当用户点击输入框外的区域应该隐藏 输入法键盘 或者 其他操作区域
先放上一段代码 放在Activity
中 所有的EditText
外点击都会隐藏键盘
1 |
|
有时候 我们在Activity
中添加onTouchEvent
方法 然后点击视图 但是就是不触发事件 这是为什么呢 这就要说一下Android的事件机制了
事件机制
Android和事件有关的方法有三个
dispatchTouchEvent
接受上级消息onInterceptTouchEvent
决策向下级分发还是自身处理onTouchEvent
自身处理逻辑
Android的分发逻辑和处理逻辑是相反的
dispatchTouchEvent
–>
分发
是从父View
到子View
处理
是从子View
到父View
同一个View中三个方法的执行顺序
dispatchTouchEvent
–> onInterceptTouchEvent
–> onTouchEvent
- 1)
dispatchTouchEvent
(默认返回值是true
)
如果返回值:false
不接受动作序列中的后续事件
- 2)
onInterceptTouchEvent
(默认返回值是false
)
如果返回值:true
就不再向子View
分发 当前View处理
- 3)
onTouchEvent
(默认返回值是false
)
如果返回值:true
就不再触发父View
的onTouchEvent
示例
假如AView
中包含BView
BView中包含CView
如果点击CView
如果BView
的 onInterceptTouchEvent
返回true
那么就CView
的onTouchEvent
就不会触发
会触发BView
的onTouchEvent
如果BView
的onTouchEvent
返回false
那么AView
的onTouchEvent
也会触发
如果BView
的onTouchEvent
返回true
那么AView
的onTouchEvent
就不会触发