Statusleiste ausblenden

In dieser Lektion erfahren Sie, wie Sie die Statusleiste in verschiedenen Versionen Android Wenn Sie die Statusleiste und optional die Navigationsleiste ausblenden, Die Inhalte nehmen einen größeren Teil des Anzeigebereichs ein, wodurch die Nutzererfahrung verbessert wird.

Abbildung 1 zeigt eine Anwendung mit einer sichtbaren Statusleiste:

Systemleisten

Abbildung 1: Sichtbare Statusleiste

Abbildung 2 zeigt eine App mit einer ausgeblendeten Statusleiste. Beachten Sie, dass auch die Aktionsleiste ausgeblendet ist. Die Aktionsleiste sollte nie ohne die Statusleiste angezeigt werden.

Systemleisten

Abbildung 2: Ausgeblendete Statusleiste.

Statusleiste in Android 4.0 und niedriger ausblenden

Auf Geräten mit Android 4.0 (API-Level 14) und niedriger kannst du die Statusleiste ausblenden, indem du WindowManager-Flags. Sie können dies programmatisch tun oder in der Manifestdatei Ihrer App ein Aktivitätsdesign festlegen. Aktivitätsdesign im Manifestdatei ist die bevorzugte Methode, wenn die Statusleiste immer angezeigt werden soll. die in Ihrer App verborgen sind. Genau genommen könnten Sie das Attribut wenn Sie möchten). Beispiel:

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

Die Verwendung eines Aktivitätsthemas hat folgende Vorteile:

  • Es ist einfacher zu pflegen und weniger fehleranfällig als das programmatische Festlegen eines Flags.
  • Sie führt zu reibungsloseren UI-Übergängen, da das System über die benötigten Informationen verfügt. um Ihre UI zu rendern, bevor die Hauptaktivität Ihrer App instanziiert wird.

Alternativ können Sie WindowManager-Flags programmatisch festlegen. Dadurch wird es einfacher, die Statusleiste ein- oder auszublenden, während der Nutzer mit Ihre App:

Kotlin

class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        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) {
            window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN)
        }
        setContentView(R.layout.activity_main)
    }
    ...
}

Java

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);
        }
        setContentView(R.layout.activity_main);
    }
    ...
}

Wenn Sie WindowManager-Flags festlegen (über ein Aktivitätsthema oder programmiert, bleiben die Flags in Kraft, es sei denn, sie werden von Ihrer App gelöscht.

Sie können FLAG_LAYOUT_IN_SCREEN um Ihr Aktivitätslayout so einzustellen, dass derselbe Bildschirmbereich verwendet wird, der verfügbar ist, wenn Sie FLAG_FULLSCREEN. Dadurch wird verhindert, Die Größe von Inhalten wird nicht angepasst, wenn die Statusleiste ein- und ausgeblendet wird.

Statusleiste in Android 4.1 und höher ausblenden

Du kannst die Statusleiste unter Android 4.1 (API-Level 16) und höher ausblenden, indem du mit setSystemUiVisibility(). setSystemUiVisibility() legt UI-Flags fest unter auf der Ebene der einzelnen Datenansichten; werden diese Einstellungen auf Fensterebene zusammengefasst. Mit setSystemUiVisibility() zum Festlegen von UI-Flags haben Sie eine feinere Kontrolle über die Systemleisten WindowManager-Flags. Dieses Snippet blendet die Statusleiste aus:

Kotlin

// Hide the status bar.
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
actionBar?.hide()

Java

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();

Beachten Sie Folgendes:

  • Sobald die Flags der Benutzeroberfläche gelöscht wurden, z. B. indem Sie müssen, muss die App sie zurücksetzen, damit die Balken wieder ausgeblendet werden. Unter Auf Änderungen der Sichtbarkeit der Benutzeroberfläche reagieren finden Sie Diskussion darüber, wie Sie Änderungen an der Sichtbarkeit der Benutzeroberfläche überwachen können, damit Ihre App entsprechend reagieren.
  • Es macht einen Unterschied, wo Sie die UI-Flags festlegen. Wenn Sie die Systemleisten im Menü onCreate() und drückt der Nutzer die Startbildschirmtaste, werden die Systemleisten erscheinen. Wenn der Nutzer die Aktivität wieder öffnet, onCreate() wird nicht angerufen, sodass die Systemleisten sichtbar bleiben. Wenn Sie möchten, dass Änderungen der System-UI bleiben, während der Nutzer zu Ihrer Aktivität wechselt, und legen Sie UI-Flags in onResume() oder onWindowFocusChanged().
  • Die Methode setSystemUiVisibility() hat nur dann eine Wirkung, wenn die Ansicht sichtbar ist, von der aus der Aufruf erfolgt.
  • Markierungen für das Verlassen der Ansicht festgelegt mit setSystemUiVisibility() gelöscht werden.

Inhalte hinter der Statusleiste anzeigen

Unter Android 4.1 und höher können Sie festlegen, dass die Inhalte Ihrer App hinter der Statusleiste, sodass die Größe des Inhalts nicht geändert wird, wenn die Statusleiste ein- und ausgeblendet wird. Verwenden Sie dazu SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN Möglicherweise müssen Sie auch SYSTEM_UI_FLAG_LAYOUT_STABLE, damit deine App Layout zu ändern.

Wenn Sie diesen Ansatz verwenden, liegt es in Ihrer Verantwortung, sicherzustellen, der Benutzeroberfläche Ihrer App (z. B. die in einer Google Maps-App integrierten Steuerelemente) Systemleisten überlagert werden. Dies könnte dazu führen, dass deine App unbrauchbar wird. In den meisten Fällen können Sie Fügen Sie dazu Ihrer XML-Layoutdatei das Attribut android:fitsSystemWindows hinzu, das auf true. Dadurch wird der Abstand des übergeordneten ViewGroup-Elements angepasst. um Platz für die Systemfenster zu lassen. Dies ist für die meisten Anwendungen ausreichend.

In einigen Fällen kann es jedoch erforderlich sein, den Standardabstand zu ändern, um den gewünschten Wert zu erhalten. App-Layout. Um direkt zu beeinflussen, wie Ihre Inhalt wird relativ zu den Systemleisten angeordnet, die einen Bereich einnehmen, der als Fensterbereich „content insets“), überschreiben Sie fitSystemWindows(Rect insets). Die Methode fitSystemWindows() wird vom wenn sich die Inhaltseinfügungen für ein Fenster geändert haben, damit das Fenster und passen den Inhalt entsprechend an. Durch das Überschreiben dieser Methode können Sie Einfügungen (und damit das Layout Ihrer App) ganz nach Ihren Wünschen.