最近项目中遇到了华为虚拟按键适配的问题,主页是个RecylerView(如下图),如果不做适配,在界面初始化完毕后,虚拟按键会遮挡页面或者空出一些留白部分,针对这个问题上网找了些资料,总结了以下方法
首页下部分是RecylerView
首页下半部分是个RecylerView(针对适配)
<>强监听虚拟键的切换强>
注册系统广播
getContentResolver () .registerContentObserver (Settings.System.getUriFor (“navigationbar_is_min”),真的,mNavigationStatusObserver);
私人ContentObserver mNavigationStatusObserver=new ContentObserver(新处理程序()){ @Override 公共空间> @Override 公共空间> 私人空间refreshGridViewHeight () { gridView_Home。邮报》(新Runnable () { @Override 公共空间run () {//获取到宽度和高度后,可用于计算 int高度=gridView_Home.getHeight ();//根据屏幕高度计算单个菜单的高度,保证屏幕能被填满 最后一个int itemHeight=身高/3 - 3; runOnUiThread(新Runnable () { @Override 公共空间run () { homeMenuAdapter.setIemtHeight (itemHeight); gridView_Home.setAdapter (homeMenuAdapter); mPresenter.refushGridData (); 如果(Build.VERSION。SDK_INT & lt;16){ gridView_Home.getViewTreeObserver () .removeGlobalOnLayoutListener (HomeActivity.this); 其他}{ gridView_Home.getViewTreeObserver () .removeOnGlobalLayoutListener (HomeActivity.this); } } }); } });
这个移除布局监听的方法还要兼容低版本,所以要分情况,具体看代码
最后记得在活动的onDestroy或界面销毁的地方注销刚才设置的系统广播接收者
getContentResolver () .unregisterContentObserver (mNavigationStatusObserver);
以上这篇安卓虚拟按键适配动态调整布局的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。