web-dev-qa-db-ger.com

Symbolleiste überlappt unter der Statusleiste

Ich möchte Appcompat v21 Toolbar in meiner Aktivität haben. Die Symbolleiste, die ich implementiere, überschneidet sich jedoch unter der Statusleiste. Wie kann ich es reparieren?

overlapping toolbar

Hier ist die Aktivitätslayout-XML:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical">

    <include
        Android:id="@+id/toolbar"
        layout="@layout/toolbar" />

    <FrameLayout
        Android:id="@+id/container"
        Android:layout_width="fill_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1" />
</LinearLayout>

Symbolleistenansicht:

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:minHeight="?attr/actionBarSize"
    Android:background="?attr/colorPrimary" />

Themenstil:

<style name="AppTheme" parent="MaterialNavigationDrawerTheme.Light.DarkActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>
129
SanicBoom

Verwenden Sie Android:fitsSystemWindows="true" in der Stammansicht Ihres Layouts (in Ihrem Fall LinearLayout). Und Android:fitsSystemWindows ist ein 

internes Attribut zum Anpassen des Ansichtslayouts basierend auf Systemfenstern, z. B. als Statusleiste. Wenn true, wird die Auffüllung dieser Ansicht so eingestellt, dass ___ verlassen wird. Platz für die Systemfenster. Wird nur wirksam, wenn diese Ansicht in .__ ist. eine nicht eingebettete Aktivität.

Muss ein boolescher Wert sein, entweder "true" oder "false".

Dies kann auch ein Verweis auf eine Ressource (in der Form "@ [Package:] type: name") oder ein Designattribut (in der Form "? [Package:] [type:] name") sein. einen Wert dieses Typs enthalten.

Dies entspricht dem globalen Attributressourcensymbol passtSystemfenster.

221
Sohaib

Setzen Sie dies einfach auf die Datei v21/styles.xml

 <item name="Android:windowDrawsSystemBarBackgrounds">true</item>
 <item name="Android:statusBarColor">@color/colorPrimaryDark</item>

und sicher sein 

 <item name="Android:windowTranslucentStatus">false</item>
17
Zahra.HY

Keine der Antworten hat für mich funktioniert, aber dies ist schließlich das Ergebnis, nachdem ich Android:fitSystemWindows in der Stammansicht eingestellt habe (ich habe diese in styles v21 eingestellt):

<item name="Android:windowDrawsSystemBarBackgrounds">true</item>
<item name="Android:windowTranslucentStatus">false</item>

Stellen Sie sicher, dass Sie nicht die folgende Zeile haben, da AS dies standardmäßig vorsieht:

<item name="Android:statusBarColor">@Android:color/transparent</item>
10
inder_gt

Für mich bestand das Problem darin, dass ich etwas aus einem Beispiel kopiert und verwendet habe

<item name="Android:windowTranslucentStatus">true</item>

durch das Entfernen dieses Problems wurde mein Problem behoben.

8
Muz

Ich habe alle unten aufgeführten Zeilen aus /res/values-v21/styles.xml entfernt und jetzt funktioniert es einwandfrei.

 <item name="Android:windowDrawsSystemBarBackgrounds">true</item>
 <item name="Android:statusBarColor">@Android:color/transparent</item>


 <item name="windowActionBar">false</item>
 <item name="Android:windowDisablePreview">true</item>

 <item name="windowNoTitle">true</item>

 <item name="Android:fitsSystemWindows">true</item>
4
fɪəlɪs

Keine der Antworten hat für mich funktioniert, aber das ist es, was schließlich funktioniert hat, nachdem ich eingestellt habe Android: fitsSystemWindows = "false" 

in der Layoutdatei für übergeordnete Aktivitäten wird dies an vielen Stellen nicht empfohlen, aber es ist für mich Arbeit und spart meinen Tag

2
anoopbryan2

Entferne die unteren Linien von Stil oder Stil (21)

<item name="Android:windowDrawsSystemBarBackgrounds">true</item>
<item name="Android:statusBarColor">@color/colorPrimaryDark</item>
<item name="Android:windowTranslucentStatus">false</item>
0

Laut Google-Docs sollten wir das FitsSystemWindows-Attribut nicht im App-Theme verwenden, es soll in Layout-Dateien verwendet werden. Die Verwendung in Themes kann zu Problemen bei Toastmeldungen führen. 

Check Ausgabe hier & Beispiel für ein Problem hier

<item name="Android:fitsSystemWindows">true</item>

Beispiel für die Verwendung der richtigen Methode, die auch mit windowTranslucentStatus funktioniert.

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.DrawerLayout 
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/drawer_layout"

Android:fitsSystemWindows="true"

Android:layout_width="match_parent"
Android:layout_height="match_parent"
> 


<include layout="@layout/toolbar"
     Android:layout_width="match_parent"
     Android:layout_height="wrap_content">
</include>

<Android.support.design.widget.NavigationView
    Android:id="@+id/nav_view"
    Android:layout_width="wrap_content"
    Android:layout_height="match_parent"
    Android:layout_gravity="start"
    Android:fitsSystemWindows="true"
    Android:background="@color/white"
    Android:animateLayoutChanges="true"
    app:headerLayout="@layout/navigation_drawer_header"
    app:menu="@menu/navigation_drawer_menu" />

</Android.support.v4.widget.DrawerLayout>
0
Abhiode