离子空白模板默认隐藏附件栏不起作用

Posted

技术标签:

【中文标题】离子空白模板默认隐藏附件栏不起作用【英文标题】:Ionic blank template hide the accessory bar by default not working 【发布时间】:2015-07-27 16:34:12 【问题描述】:

您好,我开始了一个空白的 ionic 项目。在 app.js 文件中有这段代码:

// Ionic Starter App

// angular.module is a global place for creating, registering and retrieving Angular modules
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html)
// the 2nd parameter is an array of 'requires'
angular.module('starter', ['ionic'])

.run(function($ionicPlatform) 
  $ionicPlatform.ready(function() 
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if(window.cordova && window.cordova.plugins.Keyboard) 
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    
    if(window.StatusBar) 
      StatusBar.styleDefault();
    
  );
)

据我了解,上面的代码确实做了两件事。它隐藏了键盘上方的附件栏。并将您的状态栏样式设置为默认样式。

看起来两者似乎都不起作用。当我测试我的应用程序时,离子视图应用程序附件栏仍然存在。

当我从

更改状态栏样式代码的一部分时

StatusBar.styleDefault();

StatusBar.overlaysWebView(true); StatusBar.styleLightContent();

状态栏还是默认样式(深色),我想要浅色的状态栏。

我是做错了什么,是我遗漏了什么,还是我理解上面的代码有误。 谢谢!!

config.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<widget id="com.ionicframework.testapp582099" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
  <name>test_app</name>
  <description>
        An Ionic Framework and Cordova project.
    </description>
  <author email="hi@ionicframework" href="http://ionicframework.com/">
      Ionic Framework Team
    </author>
  <content src="index.html"/>
  <access origin="*"/>
  <preference name="webviewbounce" value="false"/>
  <preference name="UIWebViewBounce" value="false"/>
  <preference name="DisallowOverscroll" value="true"/>
  <preference name="BackupWebStorage" value="none"/>
  <feature name="StatusBar">
    <param name="ios-package" value="CDVStatusBar" onload="true"/>
  </feature>
</widget>

【问题讨论】:

打开键盘时应该隐藏状态栏的代码是什么?? if(window.cordova && window.cordova.plugins.Keyboard) cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); - 它在我问题的第一个代码块中 这会隐藏:使用下一个、上一个和完成按钮隐藏键盘附件栏。这与状态栏无关,链接到以下插件github.com/driftyco/ionic-plugin-keyboard 要隐藏状态栏,您需要使用 Statusbar.hide (请参阅此处的文档:github.com/apache/cordova-plugin-statusbar) @aorfevre 抱歉,我知道,我粘贴了错误的代码。 if(window.StatusBar) StatusBar.overlaysWebView(true);状态栏.styleLightContent(); - 这应该将状态栏更改为白色文本 【参考方案1】:

添加插件后它应该可以工作:

$ cordova plugin add org.apache.cordova.statusbar

由于某种原因,该插件不会自动安装在 Ionic 入门项目中,即使它已在代码中使用。更多信息:http://learn.ionicframework.com/formulas/customizing-the-status-bar/

要使其在 Ionic View 中工作,您可能需要做更多工作。

安装 ngCordova:http://ngcordova.com/docs/install/。确保ng-cordova.js 位于 angular.jscordova.js 之间。无论如何,这还不错,以防您想使用更多 ngCordova 插件。 作为 Angular 依赖注入 angular.module('myApp', ['ngCordova']) 运行$ cordova plugin add cordova-plugin-statusbar。请随意删除上面的插件(它们可能相同也可能不同......)。 将$cordovaStatusbar 注入您的.run 块(如果需要,您也可以注入控制器等)。 像以前一样使用,但像这样:$cordovaStatusbar.hide()。 如果您的代码位于 $ionicPlatform.ready 中,它可能无法在 Ionic View 中按预期工作(请参阅:https://github.com/driftyco/ionic-view-issues/issues/52)。要使其正常工作,请将其包装在 $timeout 中,或者

因此,如果您不反对小技巧,那么在 Ionic 加载之前将 &lt;script&gt;window.phonegap = &lt;/script&gt; 添加到您的 &lt;head&gt; 应该会强制它等待 deviceready 事件,而不会在加载后踩到 Cordova 的脚趾。比到处写 $timeout 要简单得多。

【讨论】:

以上是关于离子空白模板默认隐藏附件栏不起作用的主要内容,如果未能解决你的问题,请参考以下文章

隐藏导航栏不起作用

页面视图 + 隐藏导航栏不起作用

离子浏览文件附件不起作用

附件属性在离子本地通知插件中不起作用

导航回屏幕时隐藏的 React Native 状态栏不起作用(Android)

Onsen UI Vue 可滑动标签栏不起作用