在EditText视图中键入后隐藏键盘

时间:2016-03-07 09:03:57

标签: java android

我遇到了这段代码,但我想知道这段代码是做什么的,究竟什么是InputMethodManager,我应该在哪里输入我的类中的代码?它会进入onCreate()方法还是应该创建一个新方法?而且,我想了解这种方法的工作原理。

感谢您的回答:)我感谢您的帮助

    InputMethodManager inputManager = 
    (InputMethodManager) context.
        getSystemService(Context.INPUT_METHOD_SERVICE); 
    inputManager.hideSoftInputFromWindow(
    this.getCurrentFocus().getWindowToken(),
    InputMethodManager.HIDE_NOT_ALWAYS); 

2 个答案:

答案 0 :(得分:2)

javadoc of InputMethod非常具有描述性

  

整体输入法框架(IMF)架构的中央系统API,用于仲裁应用程序与当前输入法之间的交互。您可以使用Context.getSystemService()检索此接口的实例。

在您的特定情况下,您将在这个用例中使用

  

输入法(IME)实现允许用户生成文本的特定交互模型。系统绑定到当前使用的输入方法,导致它被创建和运行,并告诉它何时隐藏和显示其UI。一次只能运行一个IME。

同样来自 hideSoftInputFromWindow的描述,你可以提取

  

public boolean hideSoftInputFromWindow (IBinder windowToken, int flags)

     

hideSoftInputFromWindow(IBinder,int,ResultReceiver)的同义词,没有结果:请求从当前正在接受输入的窗口的上下文中隐藏软输入窗口。   参数

     

windowToken IBinder:发出请求的窗口的标记,由 View.getWindowToken()返回。

     

flags int:提供其他操作标志。当前可能为0或设置了HIDE_IMPLICIT_ONLY位。

这使得代码中的this引用了View,因此代码是extends View

类的一部分

Here就是一个例子。

答案 1 :(得分:0)

View view = this.getCurrentFocus();
if (view != null) {  
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}