赞
踩
在开发中会经常遇到和软键盘打交道的场景,那么针对这部分功能,我目前记录了一下几篇Blog ~
我的那些软键盘Blog ~
关于软键盘顶起的解决方案,主要有三种
软键盘一般都依赖于Activity,我们可通过AndroidMainfest设置对应Activity的windowSoftInputMode属性,该属性主要是用来设置窗口软键盘的交互模式 ~
windowSoftInputMode属性 - 影响
windowSoftInputMode属性 - 类型
windowSoftInputMode 类型 | 含义 |
---|---|
stateUnspecified | 未指定软键盘的状态,系统将自动选择一个合适的状态或依赖于主题中的设置,这是默认的设置 |
stateUnchanged | 当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示 |
stateHidden | 用户选择activity时,软键盘总是被隐藏 |
stateAlwaysHidden | 当该Activity主窗口获取焦点时,软键盘也总是隐藏的 |
stateVisible | 软键盘通常是可见的 |
stateAlwaysVisible | 用户选择activity时,软键盘总是显示的状态 |
adjustUnspecified | 默认设置,通常由系统自行决定是隐藏还是显示 |
adjustResize | 该Activity总是调整屏幕的大小以便留出软键盘的空间 |
adjustPan | 当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分 |
一般来说,用的比较多的还是"stateHidden|adjustResize"和"stateHidden|adjustPan"这两对组合
常见功能(显示、隐藏)
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); // 获取软键盘的显示状态 boolean isOpen=imm.isActive(); // 如果软键盘已经显示,则隐藏,反之则显示 imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); // 隐藏软键盘 imm.hideSoftInputFromWindow(view, InputMethodManager.HIDE_NOT_ALWAYS); // 强制显示软键盘 imm.showSoftInput(view,InputMethodManager.SHOW_FORCED); // 强制隐藏软键盘 imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
解决
android:windowSoftInputMode="stateHidden|adjustResize"
或者
android:windowSoftInputMode="adjustPan"
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
解决
android:windowSoftInputMode="adjustPan|stateAlwaysHidden"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。