android 控制软键盘显示和隐藏
16lz
2021-01-26
当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入。
1 InputMethodManagerimm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
2 // 得到InputMethodManager的实例
3 if (imm.isActive()){
4 // 如果开启
5 imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,InputMethodManager.HIDE_NOT_ALWAYS);
6 // 关闭软键盘,开启方法相同,这个方法是切换开启与关闭状态的
7 }
也可以简单点:
1 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
xml方式:
1 < activity android:name =".Activity.FilterActivity" android:label ="@string/app_name" android:windowSoftInputMode ="stateHidden" android:screenOrientation ="portrait" android:configChanges ="keyboardHidden|orientation"
2 />
下面做个详细的介绍:
软输入法模式选项:
publicintsoftInputMode;
以下选项与输入法模式有关:
软输入区域是否可见。
publicstaticfinalintSOFT_INPUT_MASK_STATE=0x0f;
未指定状态。
publicstaticfinalintSOFT_INPUT_STATE_UNSPECIFIED=0;
不要修改软输入法区域的状态。
publicstaticfinalintSOFT_INPUT_STATE_UNCHANGED=1;
隐藏输入法区域(当用户进入窗口时)。
publicstaticfinalintSOFT_INPUT_STATE_HIDDEN=2;
当窗口获得焦点时,隐藏输入法区域。
publicstaticfinalintSOFT_INPUT_STATE_ALWAYS_HIDDEN=3;
显示输入法区域(当用户进入窗口时)。
publicstaticfinalintSOFT_INPUT_STATE_VISIBLE=4;
当窗口获得焦点时,显示输入法区域。
publicstaticfinalintSOFT_INPUT_STATE_ALWAYS_VISIBLE=5;
窗口应当主动调整,以适应软输入窗口。
publicstaticfinalintSOFT_INPUT_MASK_ADJUST=0xf0;
未指定状态,系统将根据窗口内容尝试选择一个输入法样式。
publicstaticfinalintSOFT_INPUT_ADJUST_UNSPECIFIED=0x00;
当输入法显示时,允许窗口重新计算尺寸,使内容不被输入法所覆盖。
不可与SOFT_INPUT_ADJUSP_PAN混合使用;如果两个都没有设置,系统将根据窗口内容自动设置一个选项。
publicstaticfinalintSOFT_INPUT_ADJUST_RESIZE=0x10;
输入法显示时平移窗口。它不需要处理尺寸变化,框架能够移动窗口以确保输入焦点可见。
不可与SOFT_INPUT_ADJUST_RESIZE混合使用;如果两个都没有设置,系统将根据窗口内容自动设置一个选项。
publicstaticfinalintSOFT_INPUT_ADJUST_PAN=0x20;
当用户转至此窗口时,由系统自动设置,所以你不要设置它。
当窗口显示之后该标志自动清除。
publicstaticfinalintSOFT_INPUT_IS_FORWARD_NAVIGATION=0x100;
1 InputMethodManagerimm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
2 // 得到InputMethodManager的实例
3 if (imm.isActive()){
4 // 如果开启
5 imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,InputMethodManager.HIDE_NOT_ALWAYS);
6 // 关闭软键盘,开启方法相同,这个方法是切换开启与关闭状态的
7 }
也可以简单点:
1 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
xml方式:
1 < activity android:name =".Activity.FilterActivity" android:label ="@string/app_name" android:windowSoftInputMode ="stateHidden" android:screenOrientation ="portrait" android:configChanges ="keyboardHidden|orientation"
2 />
下面做个详细的介绍:
软输入法模式选项:
publicintsoftInputMode;
以下选项与输入法模式有关:
软输入区域是否可见。
publicstaticfinalintSOFT_INPUT_MASK_STATE=0x0f;
未指定状态。
publicstaticfinalintSOFT_INPUT_STATE_UNSPECIFIED=0;
不要修改软输入法区域的状态。
publicstaticfinalintSOFT_INPUT_STATE_UNCHANGED=1;
隐藏输入法区域(当用户进入窗口时)。
publicstaticfinalintSOFT_INPUT_STATE_HIDDEN=2;
当窗口获得焦点时,隐藏输入法区域。
publicstaticfinalintSOFT_INPUT_STATE_ALWAYS_HIDDEN=3;
显示输入法区域(当用户进入窗口时)。
publicstaticfinalintSOFT_INPUT_STATE_VISIBLE=4;
当窗口获得焦点时,显示输入法区域。
publicstaticfinalintSOFT_INPUT_STATE_ALWAYS_VISIBLE=5;
窗口应当主动调整,以适应软输入窗口。
publicstaticfinalintSOFT_INPUT_MASK_ADJUST=0xf0;
未指定状态,系统将根据窗口内容尝试选择一个输入法样式。
publicstaticfinalintSOFT_INPUT_ADJUST_UNSPECIFIED=0x00;
当输入法显示时,允许窗口重新计算尺寸,使内容不被输入法所覆盖。
不可与SOFT_INPUT_ADJUSP_PAN混合使用;如果两个都没有设置,系统将根据窗口内容自动设置一个选项。
publicstaticfinalintSOFT_INPUT_ADJUST_RESIZE=0x10;
输入法显示时平移窗口。它不需要处理尺寸变化,框架能够移动窗口以确保输入焦点可见。
不可与SOFT_INPUT_ADJUST_RESIZE混合使用;如果两个都没有设置,系统将根据窗口内容自动设置一个选项。
publicstaticfinalintSOFT_INPUT_ADJUST_PAN=0x20;
当用户转至此窗口时,由系统自动设置,所以你不要设置它。
当窗口显示之后该标志自动清除。
publicstaticfinalintSOFT_INPUT_IS_FORWARD_NAVIGATION=0x100;
更多相关文章
- EditText & IME (一)
- android 焦点
- 记录博客“参考网站”专栏源码
- Android(安卓)7.1.2(Android(安卓)N) Multi-window-mode--多窗口
- android系统提供的常用命令行工具
- Andriod软键盘出现把原来的布局给顶上去
- 关于AlertDialog.getWindow().setContentView(view)不能弹出输入
- Android_多窗口
- Android设置窗口的背景图