タブレットのステータスバーを非表示または表示できるボタンを作成しようとしています。
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
マニフェストにフルスクリーンテーマが設定されていますか?
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);
一部のユーザーでは、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);
}
Kotlinユーザーの場合
表示する
activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
非表示に
activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
Androidのkolinでステータスバーを非表示にする場合は行末にセミコロン(;)を使用する必要はありません
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
in Android using Java hidステータスバーの言語
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
このメソッドでは、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);
}
@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);
}
リファレンス- 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);
}
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)
}
}
Androidのkolinでステータスバーを非表示にする場合は行末にセミコロン(;)を使用する必要はありません
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
in Android using Java hidステータスバーの言語
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);