ps:设置的状态透明,导致虚拟按键遮住底部布局。然后各种搜索“虚拟按键遮住布局”

 都是要设置成这样:以下copy来的

//===========华丽的分割线==========

查了一下有这么几种解决方案:

1.false,设置android:windowTranslucentNavigation为false

因api要求比较高没有验证

2.在布局的父节点设置android:fitsSystemWindows="true"

在我的应用中无效,有些人说有效,有些人说底部是好了,顶部出现问题了啊,状态栏废了。具体效果自己验证

3.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

//===========华丽的分割线==========

我的项目里在华为V8上面,这些都试过了,甚至我把沉浸式状态都去掉了,底部还是这样的,遮住了!总之是无效无效!!! 也找不到问题的地方!

最后解决办法,在底部加了一个 黑色的背景的 View  高度是获取虚拟按键的高度,动态设置。

再根据判断是否有虚拟按键来控制是否显示这个View。

// 获取是否存在NavigationBar

private boolean checkDeviceHasNavigationBar(Context context) {

boolean hasNavigationBar = false;

Resources rs = context.getResources();

int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");

if (id > 0) {

hasNavigationBar = rs.getBoolean(id);

}

try {

Class systemPropertiesClass = Class.forName("android.os.SystemProperties");

Method m = systemPropertiesClass.getMethod("get", String.class);

String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");

if ("1".equals(navBarOverride)) {

hasNavigationBar = false;

} else if ("0".equals(navBarOverride)) {

hasNavigationBar = true;

}

} catch (Exception e) {

}

return hasNavigationBar;

}

/** 获取虚拟功能键高度 */

public int getVirtualBarHeigh() {

int vh = 0;

WindowManager windowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);

Display display = windowManager.getDefaultDisplay();

DisplayMetrics dm = new DisplayMetrics();

try {

@SuppressWarnings("rawtypes")

Class c = Class.forName("android.view.Display");

@SuppressWarnings("unchecked")

Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);

method.invoke(display, dm);

vh = dm.heightPixels - windowManager.getDefaultDisplay().getHeight();

} catch (Exception e) {

e.printStackTrace();

}

return vh;

}


以上两个方法也是copy来的。。。反正我是这么解决的。。。。。。其他各种办法也试了,没用!

更多相关文章

  1. Dalvik——如何控制vm
  2. Android杂识
  3. Android(安卓)intent flag 详解
  4. android开发真机调试
  5. Android(安卓)属性动画(Property Animation)完全解析 (下)
  6. Android(安卓)之Toast
  7. Android(安卓)OpenGL ES 开发(二): OpenGL ES 环境搭建
  8. 探索Popupwindow-对话框风格的窗口
  9. 我的android studio学习日记

随机推荐

  1. 5.ScrollView无法填充满屏幕
  2. 起来越像Android了?iOS 14从Android(安卓)
  3. 给 Android(安卓)应用开发者的十个建议
  4. Interaction and Visual Design the Andr
  5. Android(安卓)Ice Cream Sandwich 截图首
  6. Android UI大杂烩
  7. Android屏蔽/禁止ViewPager左右滑动/滚动
  8. Android研究之英特尔 Android* 开发人员
  9. Android SMS相关操作
  10. Dealing with dependencies in Android p