使用UniApp开发安卓的程序的时候,全面屏的手机的底部导航栏,默认不是透明的,而是带颜色的背景。一般设置成和背景色一样的颜色,假装它是透明的。
从上图可以看出,底部的NavigationBar背景是个白色的,和中间的灰色背景对比还是比较明显的。这种页面内容不多,不会达到底部,或者底部带TabBar的会不是很影响使用。
但是当页面内容多的时候,能够超过底部,就会看起来会特别奇怪,它的背景会遮盖页面内容。所以想设置为彻底透明的。
设置透明的代码如下:
if(uni.getSystemInfoSync().platform === 'android'){
var Color = plus.android.importClass("android.graphics.Color");
var WindowManager = plus.android.importClass("android.view.WindowManager");
var Build = plus.android.importClass("android.os.Build");
plus.android.importClass("android.view.Window");
var mainActivity = plus.android.runtimeMainActivity();
var window_android = mainActivity.getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
window_android.setNavigationBarContrastEnforced(false);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window_android.setNavigationBarColor(Color.TRANSPARENT);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if ((window_android.getAttributes().flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) == 0) {
window_android.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
}
}
调用Native.js使用原生的代码去实现的。设置一下就好了。