android - 在 NativeScript 上为 Android 设置安全插入
问题描述
对于 iOS,我app.ios.window.safeAreaInsets
用来发现 NativeScript 中的安全插图。
同样,我想发现适用于 Android 手机的安全插页,这样我就可以正确处理具有软导航的 Android 设备或具有缺口的较新 Android 手机(例如 OnePlus 6)。
我在tns-platform-declarations
SDK 级别 20+ 中看到有一个类android.view.WindowInsets
,它具有类似getSystemWindowInsetTop()
and的方法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;
推荐阅读
- python - 在我的函数中循环遍历字典值
- javascript - 如何使用 JSON 数据创建动态表?
- c# - 体素树生成器
- c# - 在导航中传递数据
- c++ - 使用 const 变量时无效使用非静态数据成员
- java - org.openqa.selenium.WebDriverException:未知错误:无法通过 Java 使用 ChromeDriver Chrome 和 Selenium 聚焦元素
- html - 如何在动态大小的 div 容器中使用“溢出:滚动”?
- java - Java NIO 7-Zip 文件系统提供程序
- html - 绝对子级不拉伸到绝对父级内的内容大小
- php - 在 laravel 5.7.* 应用程序上使用 php artisan 的问题