很多界面都需要控制软键盘的打开与收起,有必要了解关于Android的软键盘的控制。
软键盘的显示原理
软键盘其实是一个Dialog。InputMethodService为我们的输入法创建了一个Dialog,并且对某些参数进行了设置,使之能够在底部或者全屏显示。当我们点击输入框时,系统会对当前的主窗口进行调整,以便留出相应的空间来显示该Dialog在底部,或者全屏。
Activity中软键盘的设置参数
- 清单文件中对软键盘的一些配置
|
|
在代码中设置
要设置软件盘属性,要在activity中的oncreate中的setContentView之前进行配置,举例如下:
|
|
关于windowSoftInputMode
这个属性的意义有两点:
(1)软键盘的状态——隐藏或显示。
(2)活动的主窗口调整:是否减少活动主窗口大小以便腾出空间放软键盘或是否当活动窗口的部分被软键盘覆盖时它的内容的当前焦点是可见的。
这个属性的可选属性值有以下几个:
|
|
软件盘的开关
- 网上的方法很多,很乱。这里给出工具类。
|
|
软键盘开启与关闭状态的监听
为什么要监听
有的时候需要在软键盘打开后处理一些界面的控件的状态等,总之,有需求我们才去做这件事情。
思路
这里有多位大神给出了答案,下面的代码也是从里面简单修改得来的。非常推荐。
代码与使用
|
|
使用的时候,在你的Activity或者Fragment中调用就可以了。而且,对软键盘的设置没有要求,不必要设置为某一特定模式。
|
|
关于windowToken
如果深入去看toggleSoftInput,showSoftInput、hideSoftInputFromWindow等方法的系统源码,
会发现windowToken这个对象经常出现,所以要理解windowToken这个对象的含义。
- 待续