Настройка безопасных вставок для Android на NativeScript - PullRequest
0 голосов
/ 16 сентября 2018

Для iOS я использую app.ios.window.safeAreaInsets, чтобы обнаружить безопасные вставки в NativeScript.

Точно так же я хотел бы найти безопасные вставки для телефонов Android, чтобы я мог правильно обращаться с устройствами Android, которые имеют мягкую навигацию, например, или с более новыми телефонами Android, которые также имеют метку (например, OnePlus 6).

Я вижу в 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 голосов
/ 24 июля 2019

Этот фрагмент работает для меня, по крайней мере, для определения большей высоты строки состояния с надрезом.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...