cordova-plugin-statusbar
StatusBar
オブジェクトは、iOSとAndroidのステータスバーをカスタマイズするためのいくつかの関数を提供します。
インストール
このインストール方法は、cordova 5.0以降が必要です。
cordova plugin add cordova-plugin-statusbar
リポジトリURLから直接インストールすることも可能です(不安定)
cordova plugin add https://github.com/apache/cordova-plugin-statusbar.git
環境設定
config.xml
-
StatusBarOverlaysWebView(ブール値、デフォルトはtrue)。起動時にステータスバーをWebViewの上に重ねるか、重ねないかを指定します。
<preference name="StatusBarOverlaysWebView" value="true" />
##### Android特有の動作
Android 5以降でのみサポートされています。それ以前のバージョンでは、この設定は無視されます。
-
StatusBarBackgroundColor(カラーの16進数文字列、デフォルト値なし)。起動時に16進数文字列(#RRGGBB)でステータスバーの背景色を設定します。この値が設定されていない場合、背景色は透明になります。
StatusBarOverlaysWebView
がtrueに設定されている場合、透明度を定義するために8桁の16進数文字列(#AARRGGBB)を使用することもできます。<preference name="StatusBarBackgroundColor" value="#000000" />
-
StatusBarStyle(ステータスバーのスタイル、デフォルトはlightcontent)。ステータスバーのスタイル(例:テキストの色)を設定します。使用可能なオプション:
default
、lightcontent
。<preference name="StatusBarStyle" value="lightcontent" />
-
StatusBarDefaultScrollToTop(ブール値、デフォルトはfalse)。iOSでは、Cordova WebViewがデフォルトのスクロールトップ動作を使用できるようにします。デフォルトはfalseなので、「statusTap」イベント(後述)をリッスンして動作をカスタマイズできます。
<preference name="StatusBarDefaultScrollToTop" value="false" />
Android特有の動作
Android 5+のガイドラインでは、メインアプリの色とは異なる色をステータスバーに使用することが指定されています(多くのiOSアプリの一様なステータスバーの色とは異なります)。そのため、StatusBar.backgroundColorByHexString
またはStatusBar.backgroundColorByName
を使用して、実行時にステータスバーの色を設定することをお勧めします。その方法の1つは、
if (cordova.platformId == 'android') {
StatusBar.backgroundColorByHexString("#333");
}
ステータスバーを半透明にすることも可能です。Androidは16進数のARGB値を使用し、#AARRGGBBのようにフォーマットされます。最初の2文字のAAはアルファチャネルを表します。10進数の不透明度値を16進数の値に変換する必要があります。詳細については、こちらを参照してください。
たとえば、不透明度が20%の黒いステータスバー
if (cordova.platformId == 'android') {
StatusBar.overlaysWebView(true);
StatusBar.backgroundColorByHexString('#33000000');
}
iOS特有の動作
iOS 11以降、ステータスバーをWebViewに重ねる場合は、ビューポートのメタタグにviewport-fit=cover
を含める必要があります。
<meta name="viewport" content="initial-scale=1, width=device-width, viewport-fit=cover">
起動時の非表示
実行時には以下のStatusBar.hide関数を使用できますが、iOSでアプリ起動時にStatusBarを非表示にするには、アプリのInfo.plistファイルを変更する必要があります。
存在しない場合は、これらの2つの属性を追加/編集します。「Status bar is initially hidden」を「YES」、「View controller-based status bar appearance」を「NO」に設定します。Xcodeを使用せずに手動で編集する場合は、キーと値は次のようになります。
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
メソッド
このプラグインはグローバルStatusBar
オブジェクトを定義します。
グローバルスコープ内にあるものの、deviceready
イベントの後でなければ使用できません。
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log(StatusBar);
}
- StatusBar.overlaysWebView
- StatusBar.styleDefault
- StatusBar.styleLightContent
- StatusBar.backgroundColorByName
- StatusBar.backgroundColorByHexString
- StatusBar.hide
- StatusBar.show
プロパティ
- StatusBar.isVisible
イベント
- statusTap
StatusBar.overlaysWebView
ステータスバーをWebViewの上に重ねるか、重ねないかを設定します。
StatusBar.overlaysWebView(true);
説明
ステータスバーをアプリの上に重ねるにはtrueに設定します。アプリのタイトルバーまたはコンテンツが隠れないように、スタイルを適切に調整してください。ステータスバーをソリッドにしてアプリに重ねないようにするにはfalseに設定します。その後、他の関数を使用してスタイルと背景色を適切に設定できます。
サポートされているプラットフォーム
- iOS
- Android 5+
簡単な例
StatusBar.overlaysWebView(true);
StatusBar.overlaysWebView(false);
StatusBar.styleDefault
デフォルトのステータスバー(暗いテキスト、明るい背景用)を使用します。
StatusBar.styleDefault();
サポートされているプラットフォーム
- iOS
- Android 6+
StatusBar.styleLightContent
lightContentステータスバー(明るいテキスト、暗い背景用)を使用します。
StatusBar.styleLightContent();
サポートされているプラットフォーム
- iOS
- Android 6+
StatusBar.backgroundColorByName
iOSでは、StatusBar.overlaysWebViewをfalseに設定すると、カラー名でステータスバーの背景色を設定できます。
StatusBar.backgroundColorByName("red");
サポートされているカラー名は
black, darkGray, lightGray, white, gray, red, green, blue, cyan, yellow, magenta, orange, purple, brown
サポートされているプラットフォーム
- iOS
- Android
StatusBar.backgroundColorByHexString
16進数文字列でステータスバーの背景色を設定します。
StatusBar.backgroundColorByHexString("#C0C0C0");
CSSの省略記法プロパティもサポートされています。
StatusBar.backgroundColorByHexString("#333"); // => #333333
StatusBar.backgroundColorByHexString("#FAB"); // => #FFAABB
iOSでは、StatusBar.overlaysWebViewをfalseに設定すると、16進数文字列(#RRGGBB)でステータスバーの背景色を設定できます。
Androidでは、StatusBar.overlaysWebViewがtrueの場合、およびWP7&8では、#AARRGGBB(AAはアルファ値)として値を指定することもできます。
サポートされているプラットフォーム
- iOS
- Android
StatusBar.hide
ステータスバーを非表示にします。
StatusBar.hide();
サポートされているプラットフォーム
- iOS
- Android
StatusBar.show
ステータスバーを表示します。
StatusBar.show();
サポートされているプラットフォーム
- iOS
- Android
StatusBar.isVisible
このプロパティを読み取ると、ステータスバーが表示されているかどうかを確認できます。
if (StatusBar.isVisible) {
// do something
}
サポートされているプラットフォーム
- iOS
- Android
statusTap
このイベントをリッスンして、ステータスバーがタップされたかどうかを確認します。
window.addEventListener('statusTap', function() {
// scroll-up with document.body.scrollTop = 0; or do whatever you want
});
サポートされているプラットフォーム
- iOS