Androidでステータスバーを非表示にする方法


103

私はこのリンクを参照しました。そのときに、ユーザーがEditText(for To:)をクリックすると、キーボードがポップアウトされ、同時に残りのすべてのビュー(例:compose、subject、send button)をスクロールして表示できます。その画面。同様に、私のアプリには、いくつかのウィジェットまたはビューがあるという点で1つのアクティビティがあります。ユーザーが私のアクティビティにあるEdittextをクリックすると、キーボードが飛び出し、残りのビューを表示するためにスクロールできると仮定します。しかしandroid:theme="@android:style/Theme.NoTitleBar.Fullscreen"、マニフェストでこの属性を指定すると、スクロールして残りのビューを表示できませんでしたが、属性を指定するとandroid:theme="@android:style/Theme.NoTitleBar"マニフェストのこのように、残りのビューを表示するためにスクロールできますが、その画面にステータスバーがあります。ここでは全画面が必要です。キーボードがポップアウトされても、スクロールして残りのビューを表示できます。これのために私がしなければならない変更は何ですか。


3
@ user448250:Android 3.0ではステータスバーを非表示にすることはできません。また、今後ステータスバーを非表示にできない可能性があります。Android 3.0では、ステータスバーに[戻る]ボタンと[ホーム]ボタンが配置されているため、ステータスバーは常に利用可能である必要があります。
CommonsWare 2011年

私は、3.0で非表示にAPIレベル11をエミュレータ上のタイトルとステータスバーの両方を管理している
erdomester

全画面表示は引き続き許可する必要があります。ユーザーは通常、全画面ゲームをプレイするときにステータスバーを表示したくありません。
GMsoF 2013

@ user448250これを見つけたことがありますか?
ティアゴ

活動とは何ですか?それはあなたのウェブサイトフォルダにあるいくつかのxmlファイルですか?
星雲ダスト2015

回答:


170

あなたの活動にこれを書いてください

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

ここでドキュメントを確認してください:https : //developer.android.com/training/system-ui/status.html

アプリがフルスクリーンになります。ステータスバー、タイトルバーはありません。:)


29
これは、アクティビティのスーパークラスがonCreateメソッドでsetContentViewを呼び出す場合は機能しないことに注意してください。アプリは例外で終了します。
ベンクレイトン

1
@Ron APIレベル8でテストしていました。他のレベルでは動作が異なる可能性がありますか?
Ben Clayton

これは2.3.xから4.xまでのすべてのバージョンで有効ですか?
コスタディン2014年

1
これでも、ソフトウェアキーボードが表示されているときに画面がスクロールすることはありません。
ティアゴ

2
super.onCreate(savedInstanceState);クラッシュする場合は、以前に使用してください
David

19
 if (Build.VERSION.SDK_INT < 16) {
   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 } else {
     View decorView = getWindow().getDecorView();
      int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
      decorView.setSystemUiVisibility(uiOptions);
      ActionBar actionBar = getActionBar();
      actionBar.hide();
 }

3
この方法を使用すると、ソフトキーボードを表示すると、サイズを変更するのではなく、editTextの上にビューが移動することに気付きました。どうすれば修正できますか?
Android開発者

19

テーマ"Theme.NoTitleBar.Fullscreen"を使用"android:windowSoftInputMode=adjustResize"して、アクティビティの設定を試してください。AndroidManifest.xml.詳細はここで確認できます。


上記のアプローチでは、アプリが全画面で実行されているときにステータスバーを非表示にできますが、ページを下にスワイプしてもステータスバーが表示されます。ステータスバーをまったく使用しない方法はありますか?
Hazel Wang

13

このコードを使用して、アプリのステータスバーを非表示にし、使いやすくします

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

12

これを1つのアクティビティで必要とする場合は、setContentViewの前にonCreateを配置する必要があります。

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.your_screen);

1
このようにして、キーボードがWebViewの入力フィールドを覆います。
Allen Vork 2018

@AllenVork解決策はありますか?
Ishaan Kumar

12

これをアクティビティクラスに追加します

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(
                        WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                        WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
    // some your code
}

8

これをに使用しますActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

6
void hideStatusBar() {
        if (Build.VERSION.SDK_INT < 16) {
           getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } else {
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }

このメソッドを使用して、ステータスバーを非表示にすることができます。また、アクションバーを非表示にすることも重要です。この場合、Appcompatなどのサポートライブラリからアクティビティを拡張している場合はgetSupportActionBar()。hide()を使用できますまたは、上記のメソッドの後にgetActionBar()。hide()を呼び出すだけでもかまいません。ありがとう


6

manifest.xmlファイル内のアプリケーションのテーマを変更します。

android:theme="@android:style/Theme.Translucent.NoTitleBar"

不思議なことに、これは画面の上部にオレンジ色のバーを表示します。ただし、通知バーは非表示になっています。
デンマークアシュファク2014

6

ステータスバーを非表示にする場合は、onCreate(for Activity)およびonCreateView / onViewCreated(for Fragment)でこれを実行します。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

また、アクティビティを終了するときにフラグをクリアすることを忘れないでください。フラグをクリアしないと、このアクティビティにアクセスした後、アプリ全体が全画面になります。onDestroy(for Activity)またはonDestroyView(for Fragment)でこれをクリアするには

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

5

このコードを使用してください:

requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.youractivityxmlname);

4

このコードはステータスバーを非表示にします。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

アクションバーを非表示にするには、次の行を書きます:-

requestWindowFeature(Window.FEATURE_NO_TITLE);

アクションバーとステータスバーを非表示にするために、両方の行をまとめて書き込むことができます。これらのすべての行はsetContentViewonCreateメソッドでメソッドを呼び出す前に記述する必要があります。


美しく動作します。ありがとう!
Joshua Pinter

3

AndroidManifest.xml->使用するアクティビティ内に、以下を追加します。

android:theme="@style/Theme.AppCompat.Light.NoActionBar"
//this is for hiding action bar

MainActivity.java-> onCreate()メソッド内に、以下を追加します。

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//this is for hiding status bar

3

styles.xmlを使用して非表示にできます

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
<style name="HiddenTitleTheme" parent="AppTheme">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

このようにマニフェストでこれを呼び出すだけです android:theme="@style/HiddenTitleTheme"


2

xmlを使用して色を透明に設定することで、ステータスバーを非表示にできます。statusBarColorアイテムをアクティビティテーマに追加します。

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

plsはいくつかの説明コードを追加します。答えは他の人を少し混乱させる
Ram Ghadiyaram

2
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setTheme(R.style.Theme_AppCompat_Light_NoActionBar);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN
    , WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity__splash_screen);
}

このコードは問題を解決する可能性がありますが、これが問題を解決する方法と理由の説明含めると、投稿の品質が向上し、投票数が増える可能性があります。あなたが今尋ねている人だけでなく、将来の読者のための質問に答えていることを忘れないでください。回答を編集して説明を追加し、適用される制限と前提を示してください。
ダーマン、

私はAppCompatが正確に何であるかについてはあまり知りませんでした。そして、これらの3行が仕事をしました。
user3156040

残念なことに、Google独自のドキュメントは、いつものように、これを達成する方法が正しくありません。多分彼らはこのコードをコピーして貼り付ける必要があります。
zeeshan


0

(4.4以降)キットカット以上のデバイスでは、全画面モードでステータスが表示されるのを防ぐことはできません。ステータスバーが拡大しないようにハックしてみてください。

ソリューションはかなり大きいので、SOのリンクは次のとおりです。

StackOverflow:Android 4.4以降またはフルスクリーンのキットカットでステータスバーを非表示にする


私はあなたが間違っていると思います。ステータスバーを非表示にすることに関する公式情報をご覧くださいdeveloper.android.com/training/system-ui/status.html
ホセリカルドシテリオアルカラ2017

ホセ、私は与えられたリンクの情報をチェックし、必要に応じて答えを更新します。この質問/回答は、このシナリオに対する公式の解決策がなかった1年前に追加されました。次のリリースまたはバージョンである可能性がありますgoogle / androidが同じAPI /メソッドを追加しました。彼らが解決策を提供していれば、それは嬉しいことです。ありがとう!
ジョーザホイフ2017年

0

この解決策は私にとってうまくいきます:)

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Build.VERSION.SDK_INT >= 19) {
           getWindow().setFlags(AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT, AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT);
           getWindow().getDecorView().setSystemUiVisibility(3328);
    }else{
           requestWindowFeature(Window.FEATURE_NO_TITLE);
           this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    DataBindingUtil.setContentView(this, R.layout.activity_hse_video_details);

0
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // If the Android version is lower than Jellybean, use this call to hide
    // the status bar.
    if (Build.VERSION.SDK_INT < 16) {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    } else {
       View decorView = getWindow().getDecorView();
       // Hide the status bar.
       int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
       decorView.setSystemUiVisibility(uiOptions);
       // Remember that you should never show the action bar if the
       // status bar is hidden, so hide that too if necessary.
       ActionBar actionBar = getActionBar();
       actionBar.hide();
    }

    setContentView(R.layout.activity_main);

}
...
}

0

で使われる Manifest

android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"

おそらくテーマに依存します。私の場合、例外が発生しました:「java.lang.IllegalStateException:このアクティビティでTheme.AppCompatテーマ(または子孫)を使用する必要があります。」
CoolMind 2018

0

res-> values-> styles.xmlの下

スタイルボディタグペーストの内側

<item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item>

0

Googleドキュメントを参照する場合は、Android 4.1以降でこのメソッドを使用できます。setContentView()の前にこのメソッドを呼び出します

public void hideStatusBar() {
    View view = getWindow().getDecorView();
    int uiOption = View.SYSTEM_UI_FLAG_FULLSCREEN;
    view.setSystemUiVisibility(uiOption);
    ActionBar actionBar = getActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
}

-1
requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

こんにちは!何をしているのかについて、コメントや口頭での説明を追加することを検討してください。
ジョージ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.