安卓webview中键盘遮挡输入框如何解决
关键词:安卓原生、unity、webview、键盘遮挡输入框、沉浸式状态栏。
首先是最简单的情况,当我们app有一个比较靠下的输入框时,唤出键盘会遮挡住输入框。
这种情况的对应方式很简单,只需要找到安卓项目清单文件AndroidManifest.xml,对activity进行android:windowSoftInputMode值进行设定就可以了,设定为adjustPan
或者adjustResize
即可。
<activity...android:windowSoftInputMode="adjustPan" >...</activity>
adjustPan
或者adjustResize是两种不同的输入框适应形式,下面附上非常简略的区别对比:
adjustPan:整个页面往上推。
adjustResize:能推的努力推。
更详细的地方可以百度。
如果到这里你的问题解决了,那实在是太好了。不过如果你尝试上述方案发现一点用没有,太惨了,你踩了大雷了。
如果你的键盘遮挡与webview挂钩了,换句话说:你的手机键盘是由webview里的输入框调起的。
这个时候情况就很复杂了,因为它涉及到全屏模式(Fullscreen)这个东西,unity的话是打包时候的是否全屏的设置,在这里是一样的概念。
Application或者activity搞了Fullscreen,或者使用了Immersive Mode、沉浸式状态栏,或者unity打包时勾选了fullScreenMode。
如果你出现问题的页面是非全屏模式的情况,activity设置adjustPan会失效,设置adjustResize没有问题。
如果你出现问题的页面是全屏模式的情况,adjustPan跟adjustResize这两个属性都会失效。
adjustPan | adjustResize | |
全屏模式+webview | X | X |
非全屏模式+webview | X | √ |
任何模式+无webview | √ | √ |
也就是说,如果你的程序不是全屏模式,但出现问题的页面有webview,只需要在activity里把android:windowSoftInputMode设定成adjustResize就可以了。
如果你的程序好巧不巧,既是全屏模式,出现问题的页面又有webview,你遇到的时2009年就被发现的一个谷歌的骨灰级bug:issue 5497。
https://issuetracker.google.com/issues/36911528
这个bug官方至2022年还没有修复,那遇到这个问题我们怎么解决呢?
12年来很多的安卓开发前端开发同学不知道多少人跌进了这个坑,我们虽然没有一个官方的解决方案,但是民间的解决方案当然存在。
先介绍两种比较简单粗暴的方案:
首先当然是取消全屏模式了,惹不起还躲不起吗,爷不干了。直接一手取消全屏模式再给android:windowSoftInputMode设置成adjustResize,困难迎刃而解。当然这种方式领导们可能不会接受哈,实在是过于简单粗暴了。
第二种方案就是比较迂回的方案了,如果这个webview展示的是咱们自己写的网页哈,就让咱们自己的网页下边增加比较长的留白,给键盘留一点的空间。
当然如果这个webview咱们动不了,就只剩下最后一个独苗苗——方案三了。
AndroidBug5497Workaround类
这也是各路大佬们一致偏爱的一种处理方式,只需要一个简简单单的AndroidBug5497Workaround类,优雅,非常优雅。
这是一个专门用来对应“issue 5497”的一个类,使用方法也非常亲民,只需要三步:
1、复制AndroidBug5497Workaround类到项目中。
2、在activity的onCreate方法中添加一句AndroidBug5497Workaround.assistActivity(this)。
然后就可以解决这个非常让人头痛的问题了!而且它在各个Android版本都没问题,效果基本与设置了adjustResize差不多。
关于AndroidBug5497Workaround类的代码,java版本与Kotlin版本都有,详情可以百度,就不在文章中附送了哈。
安卓webview中键盘遮挡输入框如何解决相关推荐
- webview 输入法_android webview输入法键盘阻塞输入框的问题
android webview输入法键盘阻塞输入框的问题 时间: 2019-10-11 本文向您介绍android webview输入法键盘遮挡输入框的问题,主要包括android webview输入 ...
- React-native键盘遮挡输入框问题的解决
2016年10月25日更新: 现在有一个更准确一点的做法是用一个View包裹住TextInput,然后通过该View的onLayout方法获取该输入框的y轴位置,再减去一个适当的高度去处理scroll ...
- iOS 解决键盘遮挡输入框问题,输入框随键盘弹起上移,切换输入法时动态调整 (Swift)
最近在项目中需要解决苹果系统输入法遮挡输入框的问题,预期结果为: 若键盘弹出后会遮挡输入框,则输入框随键盘弹起上移,输入法切换时输入框始终保持在距键盘上方 4pt 处; 若键盘弹出后不会遮挡输入框,但 ...
- Activity在全屏属性情况下,WebView会出现输入法软键盘遮挡输入框(界面无法自动上调)问题
转自:http://www.rcdio.com/js/mg/xy/47922.html 正常情况下 ,设置了该属性之后,软键盘在弹出时,输入框便不会被遮挡. 但是该属性在有些情况下是不生效的,目前我所 ...
- iOS键盘遮挡输入框,输入区域自动上移
在iOS开发过程当中,遇到关于键盘遮挡输入框的问题,经过网络参考与实践,总结如下: 登录窗口,上下放置两个UITextField,一个用户名,一个密码,放置的在屏幕下方1/3处,当点击用户名时,自动弹 ...
- 安卓webview软键盘遮住底部按钮,又名AndroidBug5497
一.背景介绍 首先介绍关于adjustSize与adjustpan 在manifest文件设置activity的windowSoftInputMode设置为 adjustPan 或者adj ...
- iOS 键盘遮挡输入框万能解决方案(多个输入框)
效果图如下: 思路分析: 代码: 知识点: 问题: 效果图如下: 思路分析: 当我们有很多输入框时,有时候键盘弹出来会遮挡着输入框.我们需要获取输入框和键盘相对于最外层视图的位置来判断是否遮挡,如果遮 ...
- 移动端手机软键盘遮挡输入框问题
页面: <section class="links"><h3 class="title">联系方式</h3><div ...
- flutter 键盘遮挡输入框问题_flutter插件推荐之 keyboard_avoider - 解决输入时的键盘遮挡问题...
插件介绍 这里推荐下防键盘遮挡控件:keyboard_avoider.虽然flutter中号称有机制可以防键盘遮挡,但是在实际使用的过程中的一些场合下还是会出现遮挡住键盘的bug,比如:app第一次安 ...
最新文章
- 未来的计算机老素描画,考试这么无聊?学生把手画成“平面”,老师:未来的“美术大师”...
- 他在京东每天做1000万图灵测试
- 查看win10剩余激活时间
- linux 英伟达 分辨率,配置nVidia显卡修改Ubuntu分辨率
- 【JDK源码】java.util.concurrent.atomic包常用类详解
- SpringCloud Zuul(九)之路由自动刷新原理
- 爬虫实现股票分析(三)
- ITSM在金融行业的应用
- 机器人(人工智能python) arduino编程 scratch2.0 乐高ev3编程 教育政策及考试
- 2D Game Creation - 2D游戏开发基本流程
- 强学习器------随机森林
- 2010最有趣牛人语录100句
- 坐标转换程序:布尔沙七参数计算、投影正反算、坐标换带等
- iOS-xcode模拟器录屏
- 卸载xampp并重装mysql
- ArduinoIDE + STM32Link烧录调试
- 那个业务大拿死在了这个地方
- 浅析静态规划和动态规划
- SARScape中用sentinel-1数据做SBAS-InSAR完整流程(1/2)
- 洛谷 1546 最短网络
热门文章
- JBPM工作流(二)——数据库表说明
- ES6——对象、数组、字符串、数值新增API
- Demo---progress-steps------ 2/50(详解)
- UnityWebPlayer使用(3) WinForm中屏蔽右键菜单
- vue npm install --save-dev css-loader出现的错误
- Java短链接生成解决方案
- java中的clear()
- linux pci/pcie驱动
- Contrastive Learning Rivals Masked Image Modeling in Fine-tuning via Feature Distillation
- hdu 6194string string string 后缀自动机