在NativeScript上为Android设置安全插图

时间:2018-09-16 17:54:46

标签: android nativescript

对于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();
}

感谢任何指针!

1 个答案:

答案 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;