android虚拟键盘InputMethodManager使用

InputMethodService为我们的输入法创建了一个Dialog,并且对某些参数进行了设置,使之能够在底部或者全屏显示。

在Activity中进行调整:
AndroidManifet.xml中属性设置:windowSoftInputMode,可以让程序控制活动主窗口调整的方式
"stateUnspecified": 软键盘的状态(隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置。这个是软件盘行为的默认设置。 
"stateUnchanged":软键盘被保持上次的状态。
"stateHidden":当用户选择该Activity时,软键盘被隐藏。
"stateAlwaysHidden": 软键盘总是被隐藏的。
"stateVisible": 软键盘是可见的。 
"stateAlwaysVisible": 当用户选择这个Activity时,软键盘是可见的。
"adjustUnspecified": 它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到屏幕上当前 的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。也就是说,系统自动决定是采用平移模式还是压缩模式,决定因素在于内容是否可以滚动。
"adjustResize":(压缩模式) 当软键盘弹出时,要对主窗口调整屏幕的大小以便留出软键盘的空间。
"adjustPan":(平移模式:当输入框不会被遮挡时,该模式没有对布局进行调整,然而当输入框将要被遮挡时,窗口就会进行平移。也就是说,该模式始终是保持输入框为可见。)该Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。
 InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
 inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_NOT_ALWAYS,0);
代码:
1.打开虚拟键盘
  1. InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
2.关闭虚拟键盘
  1. InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_NOT_ALWAYS,0);
3.判断输入法打开 or 关闭
  1. InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    boolean isOpen=imm.isActive();
在XML里面设置的属性是:android:windowSoftInputMode
 
使用adjustResize属性之后,如果界面中没有滚动条,需要添加一个滚动条Scrollview包裹新的内容,保证resize后能滚动小时不下的内容;

猜你喜欢

转载自blog.csdn.net/suyimin2010/article/details/80906655