无法使用 IONIC 5 在 Android 中更改状态栏颜色

Posted

技术标签:

【中文标题】无法使用 IONIC 5 在 Android 中更改状态栏颜色【英文标题】:Unable to change Statusbar color in Android using IONIC 5 【发布时间】:2020-10-02 18:00:22 【问题描述】:

我的应用在 IONIC 5 中,我正在使用以下代码更改 app.component.ts file 中的状态栏颜色。

import  StatusBar  from '@ionic-native/status-bar/ngx';

export class AppComponent 

  constructor(
    ...
    private statusBar: StatusBar
    ...
  ) 
    this.initializeApp();
  

  initializeApp() 
      ...
      this.statusBar.styleDefault();
      this.statusBar.backgroundColorByHexString('#ffffff');
      ...
  

似乎ios会自动更改与工具栏匹配的状态栏颜色,即使我没有在代码中更改它,但对于android,状态栏颜色始终是黑色并且不会改变。

【问题讨论】:

请分享你的 package.json 【参考方案1】:

假设您在 ionic Native 项目中使用电容器。你有两个选择:

Op 1. 运行 npm install 以使用 cordova 包:npm install cordova-plugin-statusbar,然后运行 ​​ionic build --prodnpx cap sync android。 check the docs 获取过时的科尔多瓦/电容器说明。

这里有一个示例,状态栏与 OnInit 和平台准备就绪,您可以选择。

import  Component, OnInit  from '@angular/core';

import  Platform  from '@ionic/angular';
import  SplashScreen  from '@ionic-native/splash-screen/ngx';
import  StatusBar  from '@ionic-native/status-bar/ngx';

@Component(
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.scss']
)
export class AppComponent  implements OnInit 
  constructor(
    private platform: Platform,
    private splashScreen: SplashScreen,
    private statusBar: StatusBar
  ) 
    this.initializeApp();
  

  ngOnInit() 
   // Dont mix, choose OnInit or platform ready
   //this.statusBar.backgroundColorByHexString('#ffffff');
  

  initializeApp() 
    this.platform.ready().then(() =>   
      this.statusBar.overlaysWebView(false);
      this.statusBar.backgroundColorByName("yellow");
      this.splashScreen.hide();
    );
  

Op 2. 没有 cordova 作为电容器的电容器已经为您提供了 StatusBar 对象 Use Capacitor Core Status Bar:

import 
  Plugins,
  StatusBarStyle,
 from '@capacitor/core';

const  StatusBar  = Plugins;

export class StatusBarExample 
  isStatusBarLight = true

  changeStatusBar() 
    StatusBar.setStyle(
      style: this.isStatusBarLight ? StatusBarStyle.Dark : StatusBarStyle.Light
    );
    this.isStatusBarLight = !this.isStatusBarLight;

    // Display content under transparent status bar (Android only)
    StatusBar.setOverlaysWebView(
      overlay: true
    );
    
    StatusBar.setBackgroundColor(color:"#215E96")

  

  hideStatusBar() 
    StatusBar.hide();
  

  showStatusBar() 
    StatusBar.show();
  

【讨论】:

【参考方案2】:

它对我有用。

我没有使用:

this.statusBar.styleDefault();

只有 app.component.ts 文件中的下一个代码:

export class AppComponent implements OnInit
ngOnInit() 
    this.statusBar.backgroundColorByHexString('#ffffff');
  

【讨论】:

以上是关于无法使用 IONIC 5 在 Android 中更改状态栏颜色的主要内容,如果未能解决你的问题,请参考以下文章

IONIC 3 无法使用@ionic-native/file-opener 在 Android 中打开 PDF 文件

无法在构建 Android 中使用 Ionic 加载资源

在 android 中使用 5 到 7 天后,ionic 5 应用程序崩溃

无法使用 Ionic CLI 构建 Android Apk

为啥我无法通过 ionic 框架在 Android 上接收推送通知

Ionic 3:css的一部分在Android平台上不起作用