見出し画像

ステータスバーが見えなくなった時

問題:ステータスバーが真っ黒になって時間とかが見えなくなる


それもそのはず、ぼくはネイティブ化のためにSuperViewをつかっている(Jasonetteではない)のですが、SuperViewにはhideStatusBarという、ステータスバーを消すためのコードがたくさん入っています。そりゃ消えるわ。笑

対処

というわけで、消していきましょう!

  • 前提:ネイティブ化のためのWrapperとしてSuperViewを使っていること

場所はMainActivity.javaです。
Ctrl+Fで「hideStatusBar」を検索すると、9個ヒットします。

Android Studioの左端のヤツ

特に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つを上図のように不活性化すると、ステータスバーが復活します!

ステータスバー復活!

ステータスバーの色を変えることについても次回書きます~
そいじゃまた~

いいなと思ったら応援しよう!