android - 在 NativeScript 上为 Android 设置安全插入

标签 android nativescript

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

谢谢指点!

最佳答案

这段代码对我有用,至少可以检测带有缺口的状态栏的较大高度。

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;

关于android - 在 NativeScript 上为 Android 设置安全插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52356901/

相关文章:

android - 无法使用 Espresso 启动应用程序

Android向sqlite表插入多行

nativescript - 找不到连接的设备。模拟器启动失败,错误代码为 : Cannot resolve the specified connected device by the provided index or identifier.

嵌套表单数组的 Angular PatchValue

java - 如何将 Mapbox GL Native Android Activity 示例 Java 应用程序翻译成 NativeScript?

android - 检索联系人时出现重复联系人问题

android - 如何设置 View 的最小宽度以匹配父 View

javascript - 为什么事件指示器不隐藏在 native 脚本中?

java - 当用户向下滚动并到达数据集末尾时更新数据集的最佳方法是什么?

android - Nativescript 插件中的 Java 对象无效 'this'