为什么说网上的其他的全是渣渣?
因为踩过坑,网上大多数解决方案并不能适配所有手机,一堆博客全都是什么动态计算顶部状态栏,动态计算顶部导航栏。乱七八糟的在全局布局监听器里一算。设计过于复杂,且不能适配所有安卓机型,还需要改各种配置等。我试的可笑的是Android webView输入框软键盘遮挡问题-终极解决方案(不好使你打我),用了,然后产生新的问题,底部被原生导航栏遮挡,尝试修改,未果。PS---我真想去打他
自我解决方案
- 先说优点,逻辑简单一看就会。 上代码:
/**
* 输入法问题的最终处理方案。将这个方法直接在activity的onCreate方法中调用即可。
*/
private void softInputProc(){
//这个监听是com.blankj:utilcode 库里的,一个安卓经常用到的工具类类库,大家可以
自行github搜索下,也可以替换成自己的输入法改变时检测高度的代码
KeyboardUtils.registerSoftInputChangedListener(this,height -> {
Log.d("---> 输入法height",""+height);
if(height>0){
if(originalHeight==0){
originalHeight=webParent.getMeasuredHeight();
}
//ToastUtils.show("输入法弹出处理");
ViewGroup.LayoutParams params = webParent.getLayoutParams();
params.height = originalHeight-height;
webParent.setLayoutParams(params);
}else{
if(originalHeight!=0){
ToastUtils.show("输入法关闭处理");
ViewGroup.LayoutParams params = webParent.getLayoutParams();
params.height = originalHeight;
webParent.setLayoutParams(params);
}
}
});
}
解释说明
- 先说监听器
监听是com.blankj:utilcode 库里的,一个安卓经常用到的工具类类库,大家可以 自行github搜索下,也可以替换成自己的输入法改变时检测高度的代码
- originalHeight
自行在activity中定义一下即可。int类型,初不初始化都行默认0.
- webParent
当前Activity的最外层布局容器。
包教包会
如果您执行了上面代码还不能完美解决输入法问题,或者哪里不清楚,不明白。请QQ我(634534398 如此风景)。包教包会。也欢迎您在底部评论您在集成此代码时遇到的问题。