Android中点击隐藏软键盘最佳方法
程序员文章站
2023-12-20 23:53:40
实现功能:点击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); } }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
推荐阅读
-
Android中点击隐藏软键盘最佳方法
-
Android编程实现Listview点击展开和隐藏的方法
-
Android中隐藏状态栏和标题栏的方法汇总(隐藏状态栏、标题栏的五种方法)
-
Android Dialog中软键盘的显示与隐藏的示例
-
Android 开发之Dialog中隐藏键盘的正确使用方法
-
Android编程实现Listview点击展开和隐藏的方法
-
Android 开发之Dialog中隐藏键盘的正确使用方法
-
Android ListView中headerview的动态显示和隐藏的实现方法
-
解析android中隐藏与显示软键盘及不自动弹出键盘的实现方法
-
Android中ListView的item点击没有反应的解决方法