安卓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第一次安 ...
最新文章
- php 腾讯云实时音视频,腾讯云视频 -实时音视频学习日志
- 机器学习模型调参指南(附代码)
- HDU - 1051 Wooden Sticks
- leetcode算法题--无重复字符的最长子串
- 【Android 内存优化】自定义组件长图组件 ( 长图滚动区域解码 | 手势识别 GestureDetector | 滑动计算类 Scroller | 代码示例 )
- python3生成一个定长列表_range方法在Python2和Python3中的不同
- 超好用的5款开发工具,Python初习者必看
- matlab求矩阵中值函数,matlab在一个函数里,如何调用另一个函数里面求得的雅可比矩阵并赋值?...
- Android 抖动提示动画
- java研发工程师与java后端工程师有什么区别?
- 【Flink】Direct buffer memory taskmanager.memory.task.off-heap.size
- (转载)Dig命令的用法
- 088 菱形继承问题
- Xilinx ISE14.2新手入门
- web前端优化一些看法
- 阿里图标库使用(在线使用)
- Android MP4边下边播
- C++实现十进制转换
- unsw计算机科学的挂科率,2020年新南威尔士大学研究生挂科率
- iOS 手势的用法