qua*_*ost 5 android nativescript
我正在通过udemy 上的这门课程学习本机脚本,并且在我的代码的第一行中,我在 Android 上遇到了问题。
我刚刚创建了一个带有 Stacklayout 和标签的组件。当我在 ios 和 android 模拟器上运行它时,在 ios 上一切正常。但在 android 上,标签在状态栏后面。我试图在我真正的 android 设备上运行它,结果是一样的。项目真的很简单,我基本都是跑TNS create,删掉所有不需要的组件和路由的东西。然后添加了这个非常基础的组件。根本不涉及 CSS 规则。
在这个课程的视频中,老师没有这个问题。我的配置有什么问题?
小智 3
我的情况你是对的。不保证预览的行为与真实构建的行为 100% 匹配。以下是更多信息:https://nativescript.org/blog/nativescript-preview/ 另外,在您的情况下,您在 Android 预览中看到的栏是预览应用程序的状态栏的状态,而不是您的应用程序的状态。
此行为可能取决于:
可能有多种方法可以解决状态栏问题。
在我的例子中,我在页面标签上使用了backgroundSpanUnderStatusBar来指示状态栏颜色应该与顶部组件的背景相同。
在 IOS 上这很棒。但在 Android 上,我的应用程序在状态栏“下方”启动。这与问题的描述行为相同。这是因为状态栏是特定于操作系统的。
我发现的解决方案/作弊(灵感来自我不记得的插件)。计算Os状态栏的高度并向根元素添加顶部填充。这是计算的高度函数:
import * as application from 'tns-core-modules/application';
import * as utils from 'tns-core-modules/utils/utils';
getStatusBarHeight() {
let result = 0;
if (application.android) {
const resourceId = (application.android.foregroundActivity || application.android.startActivity).getResources().getIdentifier('status_bar_height', 'dimen', 'android');
if (resourceId) {
result = (application.android.foregroundActivity || application.android.startActivity).getResources().getDimensionPixelSize(resourceId);
result = utils.layout.toDeviceIndependentPixels(result);
}
}
return result;
},
Run Code Online (Sandbox Code Playgroud)
并与 NativeScript vue 一起使用:
<DockLayout :paddingTop="getStatusBarHeight()"></DockLayout>
Run Code Online (Sandbox Code Playgroud)
请注意,如果在 ios 和 android 上返回计算值,则返回 0。这是一种作弊,但效果很好。
我正在运行 tns-core 6.5.1。新版本可能会修复 Android 上状态栏的一些问题。
| 归档时间: |
|
| 查看次数: |
1209 次 |
| 最近记录: |