欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 点击屏幕空白处收起输入法软键盘(手动打开)

程序员文章站 2024-02-24 13:48:10
很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏。为了更好的体验,我们可以实现当用户使用完毕软键盘...

很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏。为了更好的体验,我们可以实现当用户使用完毕软键盘时。点击屏幕空白区域即可实现收起输入法软键盘功能。下面给大家介绍下实现方法。

1、//隐藏软键盘  

 在java文件:

inputmethodmanager m = (inputmethodmanager) mcontext.getsystemservice(context.input_method_service);
  m .hidesoftinputfromwindow(xxxx.getwindowtoken(), 0);//比如editview

或者是:

在manifest.xml的activity中写上:android:windowsoftinputmode="statehidden表示打开activity隐藏输入法。

Android 点击屏幕空白处收起输入法软键盘(手动打开)

2、//显示软键盘,控件id可以是edittext,textview  

((inputmethodmanager)getsystemservice(input_method_service)).showsoftinput(控件id, 0); 

3、不自动弹出键盘:

最理想的实现方式:

public class homeactivity extends activity { 
 ...... 
 @override 
 public boolean dispatchtouchevent(motionevent ev) { 
 if (ev.getaction() == motionevent.action_down) { 
  // 获得当前得到焦点的view,一般情况下就是edittext(特殊情况就是轨迹求或者实体案件会移动焦点) 
  view v = getcurrentfocus(); 
  if (isshouldhideinput(v, ev)) { 
  hidesoftinput(v.getwindowtoken()); 
  } 
 } 
 return super.dispatchtouchevent(ev); 
 } 
 /** 
 * 根据edittext所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击edittext时没必要隐藏 
 * 
 * @param v 
 * @param event 
 * @return 
 */ 
 private boolean isshouldhideinput(view v, motionevent event) { 
 if (v != null && (v instanceof edittext)) { 
  int[] l = { 0, 0 }; 
  v.getlocationinwindow(l); 
  int left = l[0], top = l[1], bottom = top + v.getheight(), right = left 
   + v.getwidth(); 
  if (event.getx() > left && event.getx() < right 
   && event.gety() > top && event.gety() < bottom) { 
  // 点击edittext的事件,忽略它。 
  return false; 
  } else { 
  return true; 
  } 
 } 
 // 如果焦点不是edittext则忽略,这个发生在视图刚绘制完,第一个焦点不在editview上,和用户用轨迹球选择其他的焦点 
 return false; 
 } 
 /** 
 * 多种隐藏软件盘方法的其中一种 
 * 
 * @param token 
 */ 
 private void hidesoftinput(ibinder token) { 
 if (token != null) { 
  inputmethodmanager im = (inputmethodmanager) getsystemservice(context.input_method_service); 
  im.hidesoftinputfromwindow(token, 
   inputmethodmanager.hide_not_always); 
 } 
 } 
 ...... 
} 

以上所述是小编给大家介绍的android 点击屏幕空白处收起输入法软键盘(手动打开),希望对大家有所帮助