我的项目正在使用 Angular + Nativescript 代码共享项目来构建 Web 以及 Android 和 IOS 的移动设备。
问题是试图删除整个应用程序的操作栏。我已经阅读了一些关于这个问题的帖子,但是似乎没有一个解决方案有效,或者至少最终不是一个很好的解决方案。
我试图添加,<Page actionBarHidden="true"></page>
但是这在包含路由的其他组件中或在其他组件中根本不起作用,app.component
例如home.component
带有路由的 a home
。如:
<Page actionBarHidden="true">
<StackLayout orientation="vertical">
<Image src="res://buy" stretch="none" horizontalAlignment="center"></Image>
</StackLayout>
</Page>
我还尝试了一种专门针对 android 的方法,看看我是否可以通过AndroidManifest.xml
文件修复这个问题,就像我通过更新 android 清单以移除操作栏来制作原生 Android 应用程序一样。对于健全性测试,我还尝试通过styles.xml
以下方式使用它:
<style name="AppThemeNoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
在这些失败的尝试之后,我尝试了其他人推荐的以下代码,Page
例如:
import { Page } from 'tns-core-modules/ui/page';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
ngOnInit() {
this.page.actionBarHidden = true;
}
}
这种方法的问题在于,为了使该解决方案能够正常工作,我需要tns
为每个具有路由的组件创建一个文件,以便调用它以完全删除应用栏,因为每个页面似乎都处理自己的应用栏。现在这不是真正可大规模维护的,它迫使我tns
为所有具有路由的组件创建一个文件。
最后,我看到了一个示例,其中我们有一个具有此逻辑的服务,this.page.actionBarHidden
并且rootFrame.actionBarVisibility = 'never'
您可以在文件中调用它component.ts
而无需创建component.tns.ts
文件但是问题是现在您需要创建一个具有要调用的空函数,tns
为实际逻辑创建该服务的文件,并且必须在每个具有路由的组件中调用它。
正如您所看到的,有些解决方案根本不起作用,而其他解决方案则需要大量额外的代码和可维护性,尤其是随着应用程序的增长,它们并不是非常理想的解决方案。
我将继续研究这个问题,并且我相信必须有一个干净的解决方案。