android 软键盘 InputMethodManager

  1、需要强制隐藏或显示Android输入法键盘时,下边这个是让输入法状态发生逆转,如果当前未显示则显示出来,如果显示出来则隐藏。

          //设置键盘输入状态,如果显示则隐藏,如果隐藏则显示

                InputMethodManager imm = (InputMethodManager)GetSystemService(Activity1.InputMethodService);
                if (imm.IsActive)
                {
                    imm.ToggleSoftInput(ShowFlags.Implicit, HideSoftInputFlags.NotAlways);
                }

关闭软键盘

                        //关闭软键盘
                    if (imm.IsActive&& CurrentFocus != null)
                    {
                        if (CurrentFocus.WindowToken != null)
                        {
                            imm.HideSoftInputFromWindow(CurrentFocus.WindowToken, HideSoftInputFlags.NotAlways);
                        }
                    }

禁止软键盘弹出,设置如下属性

            
            android:label="@string/app_name" 
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustUnspecified|stateHidden"
            android:configChanges="orientation|keyboardHidden">

2、程序启动后直接弹出软键盘,不能直接在OnCreate中设置,必须等View绘制事件完毕才可以弹出,需要用到Timer辅助实现,如果要实现输入的功能,必须让EditText获得焦点。

//应用启动后自动打开输入法

@Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

      Timer timer = new Timer();
        timer.schedule(new TimerTask() {
           @Override
                public void run() {
                        InputMethodManager imm = (InputMethodManager)MainActivity.this.getSystemService(INPUT_METHOD_SERVICE); 
                        imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); 
                        Toast.makeText(MainActivity.this, "show", Toast.LENGTH_SHORT).show();
                     }

              }, 1000);  //在一秒后打开

}

以下转载别人,为自己做些知识储备

3、输入法的一些相关常量

    public static final int HIDE_IMPLICIT_ONLY

           hideSoftInputFromWindow(IBinder, int)中的标志,表示如果用户未显式地显示软键盘窗口,则隐藏窗口。

           常量值: 1 (0x00000001)

 

    public static final int HIDE_NOT_ALWAYS

    hideSoftInputFromWindow(IBinder, int)中的标志,表示软键盘窗口总是隐藏,除非开始时以SHOW_FORCED显示。

    常量值: 2 (0x00000002)

 

    public static final int RESULT_HIDDEN

    showSoftInput(View, int, ResultReceiver)hideSoftInputFromWindow(IBinder, int, ResultReceiver)ResultReceiver结果代码标志:软键盘窗口从显示切换到隐藏时的状态。

    常量值: 3 (0x00000003)

 

    public static final int RESULT_SHOWN

    showSoftInput(View, int, ResultReceiver)hideSoftInputFromWindow(IBinder, int, ResultReceiver)ResultReceiver结果代码标志:软键盘窗口从隐藏切换到显示时的状态。

    常量值: 2 (0x00000002)

 

    public static final int RESULT_UNCHANGED_HIDDEN

    showSoftInput(View, int, ResultReceiver)hideSoftInputFromWindow(IBinder, int, ResultReceiver)ResultReceiver结果代码标志:软键盘窗口不变保持隐藏时的状态。

    常量值: 1 (0x00000001)

 

    public static final int RESULT_UNCHANGED_SHOWN

    showSoftInput(View, int, ResultReceiver)hideSoftInputFromWindow(IBinder, int, ResultReceiver)ResultReceiver结果代码标志:软键盘窗口不变保持显示时的状态。

    常量值: 0 (0x00000000)

 

    public static final int SHOW_FORCED

  showSoftInput(View, int)标志,表示用户强制打开输入法(如长按菜单键),一直保持打开直至只有显式关闭。

    常量值: 2 (0x00000002)

 

    public static final int SHOW_IMPLICIT

      showSoftInput(View, int)标志,表示隐式显示输入窗口,非用户直接要求。窗口可能不显示。

常量值: 1 (0x00000001)
 

 4、输入法的一些公共方法

    public void displayCompletions (View view, CompletionInfo[] completions)(译者注:输入法自动完成)

 

    public InputMethodSubtype getCurrentInputMethodSubtype ()(译者注:获取当前输入法类型?)

 

    public List getEnabledInputMethodList ()(译者注:获取已启用输入法列表?)

 

    public List getEnabledInputMethodSubtypeList (InputMethodInfo imi, boolean allowsImplicitlySelectedSubtypes)

 

    public List getInputMethodList ()(译者注:获取输入法列表)

 

    public MapgetShortcutInputMethodsAndSubtypes ()

 

    public void hideSoftInputFromInputMethod (IBinder token, int flags)

   关闭/隐藏输入法软键盘区域,用户不再看到或与其交互。只能由当前激活输入法调用,因需令牌(token)验证。

    参数

    token       在输入法启动时提供令牌验证,验证后可对其进行操作。

    flags        提供额外的操作标志。当前可以为0或 HIDE_IMPLICIT_ONLYHIDE_NOT_ALWAYS等位设置。

 

    public boolean hideSoftInputFromWindow (IBinder windowToken, int flags)

      hideSoftInputFromWindow(IBinder, int, ResultReceiver)的无返回值版:从窗口上下文中确定当前接收输入的窗口,隐藏其输入法窗口

    参数

    windowToken 由窗口请求View.getWindowToken()返回得到的令牌(token)。

    flags        提供额外的操作标志。当前可以为0或 HIDE_IMPLICIT_ONLY位设置。

 

    public boolean hideSoftInputFromWindow (IBinder windowToken, int flags, ResultReceiver resultReceiver)

    从窗口上下文中确定当前接收输入的窗口,要求隐藏其软键盘窗口。它可由用户调用并得到结果而不仅仅是显式要求输入法窗口隐藏。

    参数

    windowToken 由窗口请求View.getWindowToken()返回得到的令牌(token)。

    flags        提供额外的操作标志。当前可以为0或 HIDE_IMPLICIT_ONLY位设置。

        resultReceiver  如不为空,当IME处理请求告诉你完成时调用。你收到的结果码可以是RESULT_UNCHANGED_SHOWNRESULT_UNCHANGED_HIDDENRESULT_SHOWN,或RESULT_HIDDEN

 

    public void hideStatusIcon (IBinder imeToken)(译者注:隐藏状态栏图标?)

 

    public boolean isAcceptingText ()

    当前服务视图接受全文编辑返回真。没有输入法联接为false,这时其只能处理原始按键事件。

 

    public boolean isActive (View view)

    视图为当前输入的激活视图时返回真。

 

    public boolean isActive ()

    输入法中的任意视图激活时返回真。

 

    public boolean isFullscreenMode ()

    判断相关输入法是否以全屏模式运行。全屏时,完全覆盖你的UI时,返回真,否则返回假。

 

    public boolean isWatchingCursor (View view)

    如当前输入法要看到输入编辑者的光标位置时返回真。

 

    public void restartInput (View view)

    如有输入法联接至视图,重启输入以显示新的内容。可在以下情况时调用此方法:视图的文字导致输入法外观变化或有按键输入流,如应用程序调用TextView.setText()时。

             参数 view        文字发生变化的视图。

 

    public void sendAppPrivateCommand (View view, String action, Bundle data)

    对当前输入法调用 InputMethodSession.appPrivateCommand()

             参数

    view         可选的发送命令的视图,如你要发送命令而不考虑视图附加到输入法,此项可以为空。

    action      执行的命令名称。必须是作用域的名称,如前缀包名称,这样不同的开发者就不会创建冲突的命令。

    data         命令中包含的任何数据。

 

    public boolean setCurrentInputMethodSubtype (InputMethodSubtype subtype)(译者注:此方法为3.0中新增的方法)

 

    public void setInputMethod (IBinder token, String id)

    强制切换到新输入法部件。只能由持有token的应用程序(application)或服务(service) 调用当前激活输入法。

             参数

    token       在输入法启动时提供令牌验证,验证后可对其进行操作。

    id              切换到新输入法的唯一标识。

 

    public void setInputMethodAndSubtype (IBinder token, String id, InputMethodSubtype subtype)

    强制切换到一个新的输入法和指定的类型。只能由持有token的应用程序(application)或服务(service) 调用当前激活输入法。(译者注:此方法为3.0中新增的方法)

             参数

    token       在输入法启动时提供令牌验证,验证后可对其进行操作。

    id              切换到新输入法的唯一标识。

    subtype 切换到新输入法的新类型。

 

    public void showInputMethodAndSubtypeEnabler (String topId)(译者注:此方法为3.0中新增的方法)

 

    public void showInputMethodPicker ()(译者注:显示输入法菜单列表)

 

    public boolean showSoftInput (View view, int flags, ResultReceiver resultReceiver)

    如需要,显式要求当前输入法的软键盘区域向用户显示。当用户与视图交互,用户表示要开始执行输入操作时,可以调用此方法。

             参数

    view         当前焦点视图,可接受软键盘输入。

    flags        提供额外的操作标志。当前可以是0或SHOW_IMPLICIT 位设置。

    resultReceiver         如不为空,当IME处理请求告诉你完成时调用。你收到的结果码可以是RESULT_UNCHANGED_SHOWNRESULT_UNCHANGED_HIDDEN,RESULT_SHOWN, 或 RESULT_HIDDEN 。

 

    public boolean showSoftInput (View view, int flags)

showSoftInput(View, int, ResultReceiver)的无返回值版:如需要,显式要求当前输入法的软键盘区域向用户显示。

             参数

    view         当前焦点视图,可接受软键盘输入。

    flags        提供额外的操作标志。当前可以是0或SHOW_IMPLICIT 位设置。

 

    public void showSoftInputFromInputMethod (IBinder token, int flags)

    显示输入法的软键盘区域,这样用户可以到看到输入法窗口并能与其交互。只能由当前激活输入法调用,因需令牌(token)验证。

             参数

    token       在输入法启动时提供令牌验证,验证后可对其进行操作。

    flags        提供额外的操作标志。可以是0或 SHOW_IMPLICITSHOW_FORCED位设置。

 

  public void showStatusIcon (IBinder imeToken, String packageName, int iconId)(译者注显示状态栏图标?)

 

    public boolean switchToLastInputMethod (IBinder imeToken)

 

    public void toggleSoftInput (int showFlags, int hideFlags)(译者注:切换软键盘)

 

    public void toggleSoftInputFromWindow (IBinder windowToken, int showFlags, int hideFlags)

    本方法切换输入法的窗口显示。如输入窗口已显示,它隐藏。如无输入窗口则显示。

             参数

    windowToken  由窗口请求View.getWindowToken()返回得到的令牌(token)。

    showFlags       提供额外的操作标志。当前可以为0或 HIDE_IMPLICIT_ONLY位设置。

    hideFlags         提供额外的操作标志。可以是0或 HIDE_IMPLICIT_ONLYHIDE_NOT_ALWAYS位设置。

 

    public void updateCursor (View view, int left, int top, int right, int bottom)

    返回窗口的当前光标位置。

 

    public void updateExtractedText (View view, int token, ExtractedText text)

    (译者注:当内容变化时文本编辑器调用此方法,通知其新提取文本。)

 

    public void updateSelection (View view, int selStart, int selEnd, int candidatesStart, int candidatesEnd)

返回当前选择区域。

你可能感兴趣的:(Android开发,C#开发android)