Android 点击空白处自动隐藏输入法

翻译 2016年05月30日 15:25:06
原文地址:http://www.oschina.net/code/snippet_2329969_46958



方法
1: 简单但有时会无效
InputMethodManager manager= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
@Override 
public boolean onTouchEvent(MotionEvent event) {  
// TODO Auto-generated method stub  
if(event.getAction() == MotionEvent.ACTION_DOWN){    
if(getCurrentFocus()!=null&& getCurrentFocus().getWindowToken()!=null){     
manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);    
}  
}  
return super.onTouchEvent(event); 
}
 
方法2: 完美适用activity与fragment
 
// -------------------------------------隐藏输入法-----------------------------------------------------
    // 获取点击事件
    @Override
    publicbooleandispatchTouchEvent(MotionEvent ev) {
        // TODO Auto-generated method stub
        if(ev.getAction() == MotionEvent.ACTION_DOWN) {
            View view = getCurrentFocus();
            if(isHideInput(view, ev)) {
                HideSoftInput(view.getWindowToken());
            }
        }
        returnsuper.dispatchTouchEvent(ev);
    }
    // 判定是否需要隐藏
    privatebooleanisHideInput(View v, MotionEvent ev) {
        if(v !=null && (v instanceof EditText)) {
            int[] l = {0,0};
            v.getLocationInWindow(l);
            intleft = l[0], top = l[1], bottom = top + v.getHeight(), right = left
                    + v.getWidth();
            if(ev.getX() > left && ev.getX() < right && ev.getY() > top
                    && ev.getY() < bottom) {
//判断点击处与EditText距离
                returnfalse;
            }else{
                returntrue;
            }
        }
        returnfalse;
    }
    // 隐藏软键盘
    privatevoidHideSoftInput(IBinder token) {
        if(token !=null) {
            InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            manager.hideSoftInputFromWindow(token,
                    InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }
  
方法3、你可以强制android隐藏虚拟键盘,用InputMethodManager方法,调用hideSoftInputFromWindow。

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

这样可以强制在任何条件下隐藏虚拟键盘。

  


Android点击EditText文本框之外任何地方隐藏键盘的解决办法

的的 的
  • mad1989
  • mad1989
  • 2014年05月05日 18:12
  • 63914

Android点击空白处隐藏键盘

直接上代码了  直接粘贴  把类得名字改成自己的就ok了 /** * 点击空白区域隐藏键盘. */ @Override public boolean onTo...
  • Zzq_Big_Cow
  • Zzq_Big_Cow
  • 2016年12月15日 15:07
  • 2062

Android点击屏幕空白处,隐藏键盘

很多界面都有EditText控件,或者自定义的输入框控件,内容输入完成之后,希望点击屏幕任意空白处,能把键盘隐藏起来。...
  • yang_xing_
  • yang_xing_
  • 2016年06月27日 17:36
  • 3259

android中点击空白处隐藏软键盘

在android中点击EditText的时候会弹出软键盘,这时候如果想隐藏软键盘或者填完内容后点其他的地方直接隐藏软键盘,可以按一下方法处理。 首先获得软键盘Manager InputMethod...
  • centralperk
  • centralperk
  • 2012年11月28日 18:31
  • 23124

Android中点击空白区域隐藏软键盘功能实现

介绍如何实现Android中点击软键盘外任意空白区域隐藏软键盘的功能
  • ccpat
  • ccpat
  • 2015年07月02日 21:26
  • 4743

android朋友圈监听键盘状态 点击空白区域隐藏键盘

/** * 判断键盘是否隐藏 */ void setViewTreeObserver() { final ViewTreeObserver observer...
  • Jhear
  • Jhear
  • 2017年02月18日 17:38
  • 291

Android点击空白区域,隐藏输入法软键盘

欢迎使用Markdown编辑器写博客很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏。为了更好的体验,我们可以实现当用户使用完...
  • djl461260911
  • djl461260911
  • 2015年05月21日 16:17
  • 6479

Android 点击空白处自动隐藏输入法

方法1: 简单但有时会无效 InputMethodManager manager= (InputMethodManager) getSystemService(Context.INPUT_METHOD...
  • fckdenny
  • fckdenny
  • 2015年09月21日 18:03
  • 212

Android 点击空白处自动隐藏输入法,适用activity与fragment

方法1: 简单但有时会无效 InputMethodManager manager= (InputMethodManager) getSystemService(Context.INPUT_METHOD...
  • a876434758
  • a876434758
  • 2015年08月24日 14:54
  • 2312

Android中单击空白区域隐藏键盘

http://www.tuicool.com/articles/7JjueeV http://gqdy365.iteye.com/blog/2189304 主题 安卓开发 ...
  • lijinhua7602
  • lijinhua7602
  • 2015年06月15日 00:15
  • 344
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 点击空白处自动隐藏输入法
举报原因:
原因补充:

(最多只允许输入30个字)