2015-11-11 9 views
5

Ich mache eine App, bei der ein Warndialog erscheint, wenn Sie eine bestimmte Schaltfläche drücken. Die Statusleiste muss versteckt sein, so habe ich eine Methode in meiner Tätigkeit:Ausblenden der Statusleiste beim Anzeigen des Alarmdialogs 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); 
    } 
} 

ich diese Methode aufrufen, in der onCreate Methode Aktivität, und es funktioniert gut, bis der Alarm-Dialog erscheint. Sobald der Alarmdialog angezeigt wird, kommt die Statusleiste zurück. Ich habe versucht, die folgenden:

alertDialog.show(); 
hideStatusBar(); 

, die nicht tat work.Then ich die onWindowFocusChanged Methode für meine Tätigkeit overrode:

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

, die den Hintergrund der Statusleiste transparent macht, aber immer noch nicht Verstecke es. Gibt es eine Möglichkeit, die Statusleiste ausgeblendet zu halten, wenn der Alarmdialog angezeigt wird?

+0

haben rufen Sie hidestatusbar() -Methode vor Dialog zeigt? – Arslan

+0

Ja, ich habe versucht, hidestatusbar() aufzurufen, bevor ich alertDialog.show() aufruft, aber das hat auch nichts getan – Thomas

+0

Haben Sie es mit einem benutzerdefinierten Stil für Dialoge versucht? oder die Einstellung von Höhe und Breite? – Arslan

Antwort

-1

Try this,

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

Titel? Autor sagte Statusleiste https://developer.android.com/training/system-ui/status.html – user25

1

Jeder Dialog hat sein eigenes Fenster, das seinen eigenen Stil haben.

In Ihrem Fall hideStatusBar() funktioniert nicht, weil es von onCreate() der Aktivität aufgerufen heißt es versucht, Aussehen der Aktivität Fenster ändern, aber nicht das Fenster des Dialogs.

Die Lösung lautet:

Subklassen-Alertdialog. Bewegen Sie sich dort hideStatusBar() und rufen Sie es aus Dialog onCreate().

Es bedeutet, dass Sie einen Deal mit Dialog.getWindow() eher Activity.getWindow()

Hier eine kleine Probe haben haben:

public static class TranslucentDialog extends AlertDialog { 
    ... 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
    } 
}