ステータスバーが見えなくなった時
問題:ステータスバーが真っ黒になって時間とかが見えなくなる
それもそのはず、ぼくはネイティブ化のためにSuperViewをつかっている(Jasonetteではない)のですが、SuperViewにはhideStatusBarという、ステータスバーを消すためのコードがたくさん入っています。そりゃ消えるわ。笑
対処
というわけで、消していきましょう!
前提:ネイティブ化のためのWrapperとしてSuperViewを使っていること
場所はMainActivity.javaです。
Ctrl+Fで「hideStatusBar」を検索すると、9個ヒットします。
特に395行目にある「Private void hidestatusBar()」が親玉で、他の「hideStatusBar()」がこの親玉を呼び出しています。
private void hideStatusBar() {
if (!TextUtils.isEmpty(getString(R.string.hide_status_bar))) {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
// Note that system bars will only be "visible" if none of the
// LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
// other navigational controls.
runOnUiThread(new Runnable() {
@Override
public void run() {
hideStatusBar();
}
});
}
}
});
ActionBar actionBar = getActionBar();
if (actionBar != null) {
actionBar.hide();
}
}
}
なので、全部消してしまってもよいのですが、いつか本当にステータスバーを消したくなる時が来るかもしれないので、今回は親玉以外の「hidestatusBar()」を削除します。
親玉の中に「hidestatusbar()」が3つ入っているので、残りの6つを上図のように不活性化すると、ステータスバーが復活します!
ステータスバーの色を変えることについても次回書きます~
そいじゃまた~