2015-11-11 2 views
5

特定のボタンを押したときに警告ダイアログがポップアップするアプリケーションを作成しています。ステータスバーが非表示にする必要がありますので、私は私の活動の方法があります。アラートダイアログを表示している間ステータスバーを隠すAndroid

private 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); 
    } 
} 

私は活動ののonCreateメソッドでこのメソッドを呼び出すと、警告ダイアログがポップアップ表示されるまで、それが正常に動作します。警告ダイアログが表示されるとすぐに、ステータスバーが戻ってきます。私は、次のことを試してみました:

私は私の活動のためのonWindowFocusChanged方法オーバーライドwork.Thenなかった
alertDialog.show(); 
hideStatusBar(); 

public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    hideStatusBar(); 
} 

ステータスバーの背景が透明になり、まだありませんそれを隠す。アラートダイアログが表示されたときにステータスバーを非表示にする方法はありますか?

+0

をhidestatusbar呼んでたのですか? – Arslan

+0

はい、alertDialog.show()を呼び出す前にhidestatusbar()を呼び出そうとしましたが、何もしませんでした – Thomas

+0

ダイアログにカスタムスタイルを使用しようとしましたか?または高さと幅のパラメータを設定していますか? – Arslan

答えて

-1

は、各ダイアログは、独自のスタイルを持って、独自のウィンドウを持ってい

final Dialog dialog = new Dialog(context); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.activity_no_title_dialog); 
dialog.show(); 
+0

タイトル?作者はステータスバーhttps://developer.android.com/training/system-ui/status.htmlを言った – user25

1

、これを試してみてください。

hideStatusBar()はアクティビティのonCreate()から呼び出されたため、アクティビティのウィンドウの外観は変更できますが、ダイアログのウィンドウは変更されないため、機能しません。

ソリューションです:

サブクラスAlertDialog。 hideStatusBar()に移動し、ダイアログのonCreate()から呼び出します。

ちょっとサンプルここでは、Dialog.getWindow()との契約を持っている必要がむしろActivity.getWindow()

を意味:あなたは、ダイアログを表示する前に()メソッドを

public static class TranslucentDialog extends AlertDialog { 
    ... 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
    } 
} 
関連する問題