Android中点击隐藏软键盘最佳方法
程序员文章站
2024-02-17 16:39:34
实现功能:点击edittext,软键盘出现并且不会隐藏,点击或者触摸edittext以外的其他任何区域,软键盘被隐藏;
1、重写dispatchtouchevent()方...
实现功能:点击edittext,软键盘出现并且不会隐藏,点击或者触摸edittext以外的其他任何区域,软键盘被隐藏;
1、重写dispatchtouchevent()方法,获取当前触摸事件为down的时候隐藏软键盘
@override public boolean dispatchtouchevent(motionevent ev) { //finger touch screen event if (ev.getaction() == motionevent.action_down) { // get current focus,generally it is edittext view view = getcurrentfocus(); if (isshouldhidesoftkeyboard(view, ev)) { hidesoftkeyboard(view.getwindowtoken()); } } return super.dispatchtouchevent(ev); }
2、isshouldhideinput()方法;
/** * judge what situation hide the soft keyboard,click edittext view should show soft keyboard * @param v incident event * @param event * @return */ private boolean isshouldhidesoftkeyboard(view view, motionevent event) { if (view != null && (view instanceof edittext)) { int[] l = { 0, 0 }; view.getlocationinwindow(l); int left = l[0], top = l[1], bottom = top +view.getheight(), right = left + view.getwidth(); if (event.getx() > left && event.getx() < right && event.gety() > top && event.gety() < bottom) { // if click the edittext event ,ignore it return false; } else { return true; } } // if the focus is edittext,ignore it; return false; }
3、hidesoftkeyboard()方法;
/** * hide soft keyboard * @param token */ private void hidesoftkeyboard(ibinder token) { if (token != null) { inputmethodmanager im = (inputmethodmanager) getsystemservice(context.input_method_service); im.hidesoftinputfromwindow(token, inputmethodmanager.hide_not_always); } }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
上一篇: Java 快速排序(QuickSort)原理及实现代码
下一篇: Android逐帧动画实现代码
推荐阅读
-
Android中点击隐藏软键盘最佳方法
-
Android中隐藏状态栏和标题栏的方法汇总(隐藏状态栏、标题栏的五种方法)
-
Android 显示和隐藏软键盘的方法(手动)
-
Android监听软键盘弹出与隐藏的两种方法
-
解析android中隐藏与显示软键盘及不自动弹出键盘的实现方法
-
Android开发中RecyclerView隐藏item的所在区域显示空白的方法
-
Android 中自定义Dialog样式的Activity点击空白处隐藏软键盘功能(dialog不消失)
-
Android 字符串中某个字段可点击和设置颜色的方法
-
Android中TextView文本高亮和点击行为的封装方法
-
Android中WebView实现点击超链接启动QQ的方法