代码如下:
//隐藏安卓虚拟导航栏
var main = plus.android.runtimeMainActivity();
var windowMe = main.getWindow();
plus.android.importClass(windowMe);
var decorView = windowMe.getDecorView();
plus.android.importClass(decorView);
var View = plus.android.importClass("android.view.View");
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
);
其中,运行setSystemUiVisibility会报错:
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.;at com.android.internal.policy.DecorView.setSystemUiVisibility
在非自定义组件模式下并不会报错,但是切换自定义组件模式就报错了
向各位大佬求解!
3 个回复
DCloud_heavensoft
区别是自定义组件的js运行在一个独立的jscore下,而非自定义组件的js运行在一个隐藏的webview下
DCloud_Android_ST
可用plus.navigator.hideSystemNavigation()实现你问题中的NJS功能。目前在自定义组件模式下,NJS暂时不支持UI操作的API。
h***@haomo-studio.com - 热爱技术的企业家
使用plus.navigator.hideSystemNavigation()会有问题,只要模拟键盘出现了,底部的导航仍然会弹出并且无法隐藏