android-解决全屏-webview-输入框被输入法挡住-FullScreen-adjustResize失效问题
由于公司开发的 App 中,Html 的页面嵌入的有点多,坑爹的是,还有很多输入框,这就算了,还要求全屏。然后就出现了这个情况。
下面来唠叨唠叨具体的来龙去脉。
起初是这样的,整个项目基本完工了。测试发现,Html 的输入框在下半屏幕的时候,点击,软键盘弹出来的时候,会把输入框挡住。
好吧,这个问题确实有点大,要是小问题就不管也算了,先上线,以后修复。当时也是临下班的时候才跟我说,没办法,只能头头是道的答应下来,明天解决。哈哈。。。。。。不想加班,加班会猝死的。
第二天开始疯狂的搜索。结果杳无音信,没办法,自己写了个 demo 测测,结果,自己的可以,为啥?一个一个慢慢排除,自己的demo的属性和项目中的webview的属性这部分核对一遍,发现,没用,都一样,最后排除到 Manifest 清单文件中的 Activity 的注册那里,老子火大,一口气全部属性删干净,结果一测,问题就出现在这里,继续顺藤摸瓜,排除掉几个自己不可能的干扰的属性和根本不可能的影响的属性,结果一测,咦,弹出来了,问题就出现在这里,再排出掉那些根本不可能的影响的属性外。测了一下,基本锁定在了全屏这个属性的影响了。
事情总算有点眉目了。现在再次进行一轮的搜索,发现网上已经很多弟兄已经遇到过这个问题了,但十有八九都是没解决,只是知道这是Google 留给开发者的一个坑,因为在全屏的状态下,会自动屏幕掉 adjustResize 这些属性,也就是是说,无论这些属性加不加都没什么关系,很多人知道了是 Google 的坑,也就没多大理会了,但还是有些找出了解决方案,哈哈,代码搬运工,把砖搬过来就可以了,简单。
下面是解决方案:
在Activity/Fragment的onCreate()/onCreateView()里调用AndroidBug5497Workaround.assistActivity(Activity);
这里提醒一下,最好放在最后面。我一开始放在 super 后面,setcontentView 前面,报了空指针。
最后为了省事 ,直接放在onCreate最后面。
最后说一下原理,原理就是当软键盘弹出来的时候,webview的高度根据屏幕的大小进行动态的调整
代码搬运,希望能够帮助到各位。感谢答案提供者,祝生活愉快。也为我在此记上一笔。
2016-11-07
android-解决全屏-webview-输入框被输入法挡住-FullScreen-adjustResize失效问题的更多相关文章
- QT for android 比较完美解决 全屏问题
项目用到QT qml,需要在android下面全屏显示,折腾了一晚上,搞定,分享下,希望能帮助他人. 参考 Qt on Android:让 Qt Widgets 和 Qt Quick 应用全屏显示 该 ...
- 【Android 基础】Android中全屏或者取消标题栏
先介绍去掉标题栏的方法: 第一种:也一般入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 注意这句一定要写在se ...
- Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法(转)
Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法http://www.cnblogs.com/zdz8207/archive/2013/02/27/android- ...
- Xamarin Android Activity全屏的两种方式
方式一 直接在Activity的Attribute中定义 如下 在 MainActivity 中 [Activity(Label = "app", MainLauncher = t ...
- Android实现全屏的三种方式
一.通过代码 requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题栏 getWindow().setFlags(WindowManager.Lay ...
- android在全屏下第一次触摸屏幕没有触发事件
A.设置全屏的方法很多就不多说了,常见如下两种(记录用以备忘): 1.在Androidmanifest.xml文件中设定,如: <activity android:name="com. ...
- Xamarin 中开发Android实现全屏或者不显示标题栏的方法-宋兴柱
using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; ...
- Android 实现全屏、无标题栏
实现全屏无标题栏: 1.在xml文件中进行配置 AndroidManifest.xml中,找到需要全屏或设置成无标题栏的Activity,在该Activity进行如下配置即可. 实现全屏效果: and ...
- Android中全屏或者取消标题栏
先介绍去掉标题栏的方法: 第一种:也一般入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 注意这句一定要写在se ...
- Android设置全屏
全屏显示 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLA ...
随机推荐
- Hibernatel框架关联映射
Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...
- JavaScript性能优化
如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍J ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- 在 C# 里使用 F# 的 option 变量
在使用 C# 与 F# 混合编程的时候(通常是使用 C# 实现 GUI,F#负责数据处理),经常会遇到要判断一个 option 是 None 还是 Some.虽然 Option module 里有 i ...
- ASP.NET Core的路由[2]:路由系统的核心对象——Router
ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流 ...
- Paypal开发中遇到请求被中止: 未能创建 SSL/TLS 安全通道及解决方案
最近在基于ASP.NET上开发了Paypal支付平台,在ASP.NET开发的过程中没有遇到这个问题,但是引用到MVC开发模式中的时候就出现了"未能创建 SSL/TLS 安全通道及解决方案&q ...
- SDWebImage源码解读 之 NSData+ImageContentType
第一篇 前言 从今天开始,我将开启一段源码解读的旅途了.在这里先暂时不透露具体解读的源码到底是哪些?因为也可能随着解读的进行会更改计划.但能够肯定的是,这一系列之中肯定会有Swift版本的代码. 说说 ...
- 从国内流程管理软件市场份额看中国BPM行业发展
随着互联网+.中国制造2025.工业4.0等国家战略的支持与引导,企业在数字经济时代的信息化表现惊人,越来越多企业认识到,对于企业的发展来说,信息自动化远远还不够,企业的战略.业务和IT之间需保持高度 ...
- Android—ListView条目背景为图片时,条目间距问题解决
ListView是android开发中使用最普遍的控件了,可有的listView条目的内容颇为丰富,甚至为了美观,背景用指定图片,如下图:
- MySQL全文索引 FULLTEXT索引和like的区别
1.概要 InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引.对于FULLTEXT索引的内容可以使用MATCH()-AGAIN ...