直播网站源码,点击EditText以外的区域,键盘隐藏消失

直播网站源码,点击EditText以外的区域,键盘隐藏消失

第一种:

 

1
<br>InputMethodManager imm= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);  <br> <br>@Override  <br>    public boolean onTouchEvent(MotionEvent event) {  <br>        // TODO Auto-generated method stub  <br>        if (event.getAction() == MotionEvent.ACTION_DOWN) {  <br>            if (myActivity.this.getCurrentFocus() != null) {  <br>                if (myActivity.this.getCurrentFocus().getWindowToken() != null) {  <br>                    imm.hideSoftInputFromWindow(myActivity.this.getCurrentFocus().getWindowToken(),  <br>                            InputMethodManager.HIDE_NOT_ALWAYS);  <br>                }  <br>            }  <br>        }  <br>        return super.onTouchEvent(event);  <br>}  

       这种方法可以实现点击EditText以外的区域键盘消失,但这种方法实现很受限制,如果界面上有很多控件,点击除这个EditText以外的控件,键盘就不会隐藏;

 

 

 

第二种,这种方法是判断当前的点击位置,判断是否再当前的Edittext上,不是的话就让键盘消失。

 

1
<br>    @Override<br>    public boolean dispatchTouchEvent(MotionEvent ev) {<br>        if (ev.getAction() == MotionEvent.ACTION_DOWN) {<br>            View v = getCurrentFocus();<br>            if (isShouldHideKeyboard(v, ev)) {<br>                hideKeyboard(v.getWindowToken());<br>            }<br>        }<br>        return super.dispatchTouchEvent(ev);<br>    }<br> <br>    /**<br>     * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏<br>     *<br>     * @param v<br>     * @param event<br>     * @return<br>     */<br>    private boolean isShouldHideKeyboard(View v, MotionEvent event) {<br>        if (v != null && (v instanceof EditText)) {<br>            int[] l = {0, 0};<br>            v.getLocationInWindow(l);<br>            int left = l[0],<br>                top = l[1],<br>                bottom = top + v.getHeight(),<br>                right = left + v.getWidth();<br>            if (event.getX() > left && event.getX() < right<br>                    && event.getY() > top && event.getY() < bottom) {<br>                // 点击EditText的事件,忽略它。<br>                return false;<br>            } else {<br>                return true;<br>            }<br>        }<br>        // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点<br>        return false;<br>    }<br> <br>    /**<br>     * 获取InputMethodManager,隐藏软键盘<br>     * @param token<br>     */<br>    private void hideKeyboard(IBinder token) {<br>        if (token != null) {<br>            InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);<br>            im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);<br>        }<br>    }

 

 以上就是 直播网站源码,点击EditText以外的区域,键盘隐藏消失,更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2022-10-19 直播平台开发,序列化时实现任意类型自定义转换
2022-10-19 视频直播系统源码,简单的移动端轮播图
2022-10-19 直播系统代码,自定义附近的人功能地图颜色
2021-10-19 短视频系统,不改变背景颜色的基础上更改边框和字体颜色
2021-10-19 直播系统开发,Flutter创建圆圈图标按钮
2021-10-19 直播电商源码,利用Kotlin+RocketMQ 实现延时消息
点击右上角即可分享
微信分享提示