当前位置:   article > 正文

Android进阶之路 - 软键盘顶起解决方案_android 键盘顶起布局

android 键盘顶起布局

在开发中会经常遇到和软键盘打交道的场景,那么针对这部分功能,我目前记录了一下几篇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"这两对组合

  • "adjustResize"在使用时布局会被软键盘顶上去,体验非常不好
  • "adjustPan"在使用时获取焦点的控件下边的View将会被软键盘覆盖

常见功能(显示、隐藏)

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); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

软键盘弹出,同时不顶起整体布局

解决

  • 方式一:在清单中找到对应的Activity加入
android:windowSoftInputMode="stateHidden|adjustResize"
  • 1

或者

android:windowSoftInputMode="adjustPan"
  • 1
  • 方式二:在代码初始化的时候加入以下这行代码
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
  • 1

软键盘弹出,顶起当前的布局,但不需要整体上移

解决

  • 清单文件中对应的 Activity 添加以下属性
   android:windowSoftInputMode="adjustPan|stateAlwaysHidden"
  • 1
  • 应用的布局 最外层嵌套 NestedScrollView,让布局整个作为可滑动的状态(PS:NestedScrollView只允许有一个子View,所以要在子View内部包裹,而不是同级产生多个子View)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/558227
推荐阅读
相关标签
  

闽ICP备14008679号