对于iOS,我正在使用app.ios.window.safeAreaInsets
来发现NativeScript中的安全插图。
类似地,我想发现Android手机的安全设置,因此我可以正确处理具有柔和导航功能的Android设备(例如,带有槽口的新型Android手机(例如OnePlus 6)。< / p>
我在tns-platform-declarations
中看到,对于SDK级别20+,有一个类android.view.WindowInsets
,它具有类似getSystemWindowInsetTop()
和getSystemWindowInsetBottom()
这样的方法,需要。
但是我很难调用这些方法,并且想知道是否有人可以建议如何进行操作。
到目前为止,我发现decorView
具有方法onApplyWindowInsets()
,但据我所知,我已经需要将该方法传递给android.view.WindowInsets
的一个实例,据我所知可以看出我在追求什么。
这是我到目前为止所拥有的:
if (app.android && device.sdkVersion >= '20') {
const window = app.android.startActivity.getWindow();
const decorView = window.getDecorView();
//decorView.onApplyWindowInsets();
}
感谢任何指针!
答案 0 :(得分:1)
此代码段对我有用,至少对于检测带有缺口的状态栏的高度更高。
let androidStatusBarHeight = 0;
const context = application.android.context;
const metrics = new android.util.DisplayMetrics();
context.getSystemService(android.content.Context.WINDOW_SERVICE).getDefaultDisplay().getRealMetrics(metrics);
console.log(metrics.density);
const resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if(resourceId > 0) {
console.log(context.getResources().getDimensionPixelSize(resourceId));
androidStatusBarHeight = context.getResources().getDimensionPixelSize(resourceId) / metrics.density;
} else {
androidStatusBarHeight = 24;
}
return androidStatusBarHeight;