android 华为虚拟键盘不适配问题
华为虚拟键盘与沉浸式状态栏是有冲突的,普通app会自动适应华为虚拟键盘,不用作什么特殊处理,针对这个问题网上的什么设置之类似的都没有什么用,下面就提供一种我的解决方案。我这里是在H5 APP环境下,通过获取华为虚拟键盘的高度,然后若显示虚拟键盘,则上移webview虚拟键盘的高度。
1、工具类如下:
package com.iwiteks.PalmarTourism.util; import android.app.Activity; import android.content.res.Resources; import android.graphics.Point; import android.os.Build; import android.view.Display; import android.view.KeyCharacterMap; import android.view.KeyEvent; import android.view.ViewConfiguration; /** * 创建于 2018/5/17 3:38 PM * @author spirits * 类说明:android手机底部导航栏控制工具类 * 所属公司:贵州中测 */ public class NavigationBarlUtil {/** * 是否显示底部导航栏 * @return */ public static boolean isNavigationBarShow(Activity activity){if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {Display display = activity.getWindowManager().getDefaultDisplay(); Point size = new Point(); Point realSize = new Point(); display.getSize(size); display.getRealSize(realSize); return realSize.y!=size.y; }else {boolean menu = ViewConfiguration.get(activity).hasPermanentMenuKey(); boolean back = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK); if(menu || back) {return false; }else {return true; }}}/** * 获取底部导航栏高度 * @param activity * @return */ public static int getNavigationBarHeight(Activity activity) {if (!isNavigationBarShow(activity)){return 0; }Resources resources = activity.getResources(); int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); //获取NavigationBar的高度 int height = resources.getDimensionPixelSize(resourceId); return height; }/** * 获取屏幕高度 * @param activity * @return */ public static int getSceenHeight(Activity activity) {return activity.getWindowManager().getDefaultDisplay().getHeight()+getNavigationBarHeight(activity); } }
2.MainActivity里面onCreate()里面设置如下
if (NavigationBarlUtil.isNavigationBarShow(mActivity)) {//若系统底部导航栏显示,那么界面上移导航栏的高度 RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(webView.getLayoutParams()); layoutParams.setMargins(0, 0, 0, NavigationBarlUtil.getNavigationBarHeight(mActivity)); webView.setLayoutParams(layoutParams); } else {Log.e(TAG, "底部导航栏没有显示"); }
3.其他方法我试了很多种,都没有效果,此方法可行,希望可以帮到你。
android 华为虚拟键盘不适配问题相关推荐
- Android 华为虚拟导航栏适配
Android 华为虚拟导航栏适配 在写界面的时候 然后发现在界面最底下的几行文字 正好被虚拟导航栏遮挡住了,不滑动还看不到底下的文字,所以想隐去这些导航栏. 采用下面的代码将DecorView中的属 ...
- Android之popWindows底部弹出挡住了华为虚拟键盘问题
1.问题 使用popWindows的时候底部弹出遮挡华为虚拟键盘 2.解决办法 在调用下面代码之前 popupWindow.showAtLocation 加上如下的代码进行设置 popupWindow ...
- android 华为虚拟按键适配
为了设置状态栏,会设置透明标签,而华为手机的虚拟按键有可能会遮挡底部导航栏. requestWindowFeature(Window.FEATURE_NO_TITLE);super.onCreate( ...
- 解决华为虚拟键盘问题
1.华为的虚拟键盘解决了好久,一直都是只能适配部分机型,后来看了一篇说是完美解决Android虚拟键盘问题的,就按照这个思路做,发现一直有问题.最后发现解决的办法非常简单,我自己的华为手机是好使的,由 ...
- 华为 虚拟键盘_华为mate30 pro虚拟机械键盘特有体验,虽是虚拟,但却感受逼真...
华为Mate30 pro已于26日在国内正式发布了.此外,根据了解华为Mate30系列现在已经突破了5亿的销售额.看来,华为的这个下半年旗舰手机非常受欢迎啊. 华为Mate30系列现在在国内已经发布了 ...
- android监控虚拟键盘,android虚拟键盘的监控,显示和隐藏
android虚拟键盘的监控,显示和隐藏 听到一个键盘监控[显示.隐藏]的问题,上网找了下解决方案. 有提到使用onSizeChange方法监控的,也有监控onLayout方法的. 思路:在弹出键盘时 ...
- Android系统虚拟键盘设置
1,要输入数据的页面可以滚动 android:windowSoftInputMode="stateVisible|adjustResize" 2,弹出的虚拟键盘把底部栏顶了上去,使 ...
- android 中 虚拟键盘
虚拟键盘的原理比较简单: 在屏幕上绘制 需要用到的键盘虚拟图,然后重写触控监听方法 onTouchEvent, 然后在虚拟键盘位置写入相应的监听方法,即可实现完全触控的虚拟键盘技术. 下面通过虚拟键盘 ...
- Android收起虚拟键盘
关于收起虚拟键盘,网上能找到的大多是这个: InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_M ...
最新文章
- 信息记录拉取失败_天猫入驻为什么失败?猫店侠做详细解读
- putty 保存密码 自动登陆 四种方法
- 【技术综述】基于弱监督深度学习的图像分割方法综述​
- 那天的延长线在今天β
- redis常用命令与特性
- 吴恩达 深度学习 编程作业(1-2.1)- Python Basics with Numpy
- linux mysql 内存监控_MySQL监控性能的一些方法总结
- IOS数组按中文关键字以字母序排序
- VS中添加新项 数据选项卡下没有ADO.NET实体数据模型解决方案
- java中,HashMap为什么每次扩容的倍数是2,而不是1.5或者2.5?
- Origin画图技巧之柱状图优化
- ORACLE 10064诊断工具,TRCA安装与测试
- cosface:large margin cosine loss for deep face recognition
- HTML技能点--设置网页图标标志
- IE 浏览器下的兼容(onclick)
- 带宽、峰值带宽,网速是什么,它们有什么关系?
- SPSS-概率单位回归分析Probit回归 (随笔笔记)
- 搜狗音乐盒1.2单文件
- str在java中什么意思_Java中String的理解
- 阿里负责人揭秘面试潜规则【转】