Android软键盘模式

软键盘模式(WindowManager.LayoutParams)

  • 首先要分清是前进仍是后退 假设有A、B、C三个页面,A启动B,表示前进,C返回B表示后退,而且下面的软键盘显示与否与当前页面中是否有输入框无关,好比设置了SOFT_INPUT_STATE_VISIBLE则进入该Activity就会弹出软键盘不管该页面中是否有输入框
  • 下面是几种页面切换时软键盘显示与否的模式,若是输入框自己就显示在软键盘上面,那么几种模式都同样,软键盘显示不会改变Activity的任何视图,下面讲述的是当软键盘弹起会遮挡输入框的情形
  1. SOFT_INPUT_STATE_UNSPECIFIED 默认模式,系统会根据界面采起相应的软键盘的显示模式
  2. SOFT_INPUT_STATE_UNCHANGED 当这个Activity出现时,软键盘将一直保持在上一个Activity里的状态,不管是后退仍是前进
  3. SOFT_INPUT_STATE_HIDDEN 前进到设置该模式的Activity时若是键盘已经显示会隐藏键盘,回退到该Activity则软键盘是否显示保持不变
  4. SOFT_INPUT_STATE_ALWAYS_HIDDEN 前进或后退到该Activity若是软键盘已经显示都会关闭
  5. SOFT_INPUT_STATE_VISIBLE 当前进到设置该模式的Activity时会显示软键盘,回退到该Activity则软键盘是否显示保持不变
  6. SOFT_INPUT_STATE_ALWAYS_VISIBLE 当前进或后退到该Activity若是软键盘已经消失会显示
  • 下面是几种当软键盘弹出时是否须要调整Activity的视图
  1. SOFT_INPUT_ADJUST_UNSPECIFIED 未指定模式系统将根据状况使用下面的几种模式
  2. SOFT_INPUT_ADJUST_RESIZE 若是当前Activity有focus的输入框那么进入时就会弹出软键盘,而且当软键盘显示时会缩小ContentView(id 为 android.R.id.content)的高度,用以显示软键盘,注意该属性不能与SOFT_INPUT_ADJUST_PAN一块儿使用
  3. SOFT_INPUT_ADJUST_PAN 若是当前Activity有focus的输入框进入时不会弹出软键盘,而且当软键盘显示时会把整个ContentView向上移动一段距离直到输入框可以显示出来(可能会出现短暂的底部黑屏),注意该属性不能与SOFT_INPUT_ADJUST_PAN一块儿使用
  4. SOFT_INPUT_ADJUST_NOTHING 当软键盘显示时不缩小ContentView的高度,也不移动ContentView,可能会致使输入框不可见
  • 上述几个Mode做用于滚动视图也是如此,设置成SOFT_INPUT_ADJUST_NOTHING,仍是不改变Activity的视图只是弹出一个输入框。设置成SOFT_INPUT_ADJUST_RESIZE,则会减小ContentView的高度,滚动视图会向上滚动,直到Focus的输入框显示在输入框上面,进入Activity时若是有输入框Focus也会自动弹出软键盘。设置成SOFT_INPUT_ADJUST_PAN,可能会致使滚动视图的上边的Item不可见由于滚动视图向上移动出了屏幕。

Tip

  1. 想要弹出PopupWindow的时候隐藏软键盘能够设置如下代码
    window.setFocusable(true);
    window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    复制代码
  2. 弹出的PopupWindow直接覆盖在软键盘上面
    window.setFocusable(true);
    window.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
    复制代码
相关文章
相关标签/搜索