web-dev-qa-db-ja.com

Android:ステータスバー/電源バーの表示/非表示

タブレットのステータスバーを非表示または表示できるボタンを作成しようとしています。

OnCreateに入れました

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

およびボタンに表示されます:

WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);

隠す:

WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);

ヒント/ヒントはありますか?

//編集

私はここでこのヒントを見ました: http://Android.serverbox.ch/?p=306 そして私のコードを次のように変更しました:

private void hideStatusBar() throws IOException, InterruptedException {
    Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","service call activity 79 s16 com.Android.systemui"});
    proc.waitFor();
}

private void showStatusBar() throws IOException, InterruptedException {
    Process proc = Runtime.getRuntime().exec(new String[]{"am","startservice","-n","com.Android.systemui/.SystemUIService"});
    proc.waitFor();
}

したがって、ボタンをクリックするとメソッドが呼び出され、アプリが数秒間待機しているために何かが発生していることがわかります。また、LockCatを調べて、何かが起こっていることを確認しました。

表示: http://Pastebin.com/CidTRSTi 非表示: http://Pastebin.com/iPS6Kgbp

32
B770

マニフェストにフルスクリーンテーマが設定されていますか?

Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen"

これなしでは全画面表示できないと思います。

フルスクリーンフラグを追加および削除するには、次を使用します。

// Hide status bar
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// Show status bar
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
115
Rob

一部のユーザーでは、FLAG_FULLSCREENをクリアしてステータスバーを表示すると機能しない場合がありますが、

ここに私のために働いた解決策があります、( Documentation )( Flag Reference

ステータスバーを隠す

// Hide Status Bar
if (Build.VERSION.SDK_INT < 16) {
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
else {
   View decorView = getWindow().getDecorView();
  // Hide Status Bar.
   int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
   decorView.setSystemUiVisibility(uiOptions);
}

ステータスバーを表示

   if (Build.VERSION.SDK_INT < 16) {
              getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
    else {
       View decorView = getWindow().getDecorView();
      // Show Status Bar.
       int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
       decorView.setSystemUiVisibility(uiOptions);
    }
32
Pradeep

Kotlinユーザーの場合

表示する

activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

非表示に

activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

2
Muhamed Riyas M

Androidのkolinでステータスバーを非表示にする場合は行末にセミコロン(;)を使用する必要はありません

window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

in Android using Java hidステータスバーの言語

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
1
Prabh deep

このメソッドでは、SYSTEM_UI_FLAG_IMMERSIVE_STICKYを使用して、実装なしで1回タップするだけでフルスクリーンに戻ります。以下のこのメソッドを過ぎてコピーし、アクティビティの任意の場所に呼び出してください。詳細 こちら

private void hideSystemUI() {
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE
                    // Set the content to appear under the system bars so that the
                    // content doesn't resize when the system bars hide and show.
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    // Hide the nav bar and status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN);
}
0
Nicoolasens
 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //hide status bar
    requestWindowFeature( Window.FEATURE_NO_TITLE );
    getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN );


    setContentView(R.layout.activity_main);
}
0
Nihal Desai

リファレンス- https://developer.Android.com/training/system-ui/immersive.html

// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
    mDecorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
0
Varun Bhatia
fun Activity.setStatusBarVisibility(isVisible: Boolean) {
    //see details https://developer.Android.com/training/system-ui/immersive
    if (isVisible) {
        window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
        window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
    } else {
        window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                or View.SYSTEM_UI_FLAG_FULLSCREEN)
    }
}
0
Yazon2006

Androidのkolinでステータスバーを非表示にする場合は行末にセミコロン(;)を使用する必要はありません

window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

in Android using Java hidステータスバーの言語

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
0
Prabh deep