0

上部と下部に 1 つずつ、2 つのツールバーを持つアクティビティがあります。私は反転モードを使用していますが、これで問題なく動作し、ユーザーはステータスバーを下にドラッグできます...

問題は、ステータスバーを下にドラッグした後、二度と非表示にならないことです...

ここでいくつかの解決策を見つけましたが、うまくいきませんでした。ステータスバーがビューの上に表示されるか、オーバーフローメニューを開くとめちゃくちゃになるか、再び非表示にならない...

これは私が現在使用しているものです:

@Override
protected void onResume()
{
    super.onResume();
    enableFullScreenMode();
}

private void enableFullScreenMode()
{
    if (Build.VERSION.SDK_INT < 16)
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    else
        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_FULLSCREEN
//                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        );
}

私が欲しいもの

  • ユーザーがステータスバーを下にドラッグするまで常にフルスクリーン
  • たとえば 3 秒後に、ステータス バーが開かれていない場合は、ステータス バーを再び非表示にする必要があります。
  • ステータスバーを閉じた後、再び非表示にする必要があります
  • ツールバーでオーバーフロー メニューを開くと、ステータス バーが表示されない
4

3 に答える 3

1

//1.これをクリック後に配置します。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        hideSystemUI();
    }
}

private void hideSystemUI() {
    // Enables regular immersive mode.
    // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
    // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}

//2.レイアウトのどこからでも「android:fitsSystemWindows="true"」を削除します。

//3.このように onResumes に hideSystemUI() を追加します (自動再非表示ステータスとボトム ナビゲーション用)。

@Override
public void onResume() {
    super.onResume();
    hideSystemUI();
}
于 2019-03-06T10:29:11.350 に答える
0

これを試して:

View decorView = getWindow().getDecorView();
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) {
            // TODO: The system bars are visible. Make any desired
            // adjustments to your UI, such as showing the action bar or
            // other navigational controls.
        } else {
            // TODO: The system bars are NOT visible. Make any desired
            // adjustments to your UI, such as hiding the action bar or
            // other navigational controls.
        }
    }
});
于 2015-10-21T12:50:26.927 に答える