2015-11-30 7 views
17

Ich erhalte ein Problem bei der Verwendung des Koordinatorlayouts, das ein AppBarLayout (mit einer ToolBar und TabLayout) und einen ViewPager (Fragmente) als untergeordnete Elemente enthält. Ich möchte, dass die obere Leiste beim Scrollen nach unten ausgeblendet wird und beim Zurückscrollen angezeigt wird. Wenn ich jedoch nach unten scrolle, scrollt die Statusleiste ebenfalls nach oben und lässt die obere Leiste knapp unter den Statussymbolen liegen, die von ihnen überlappt werden.Android-Statusleiste mit Koordinatorlayout nach oben scrollen, Statussymbole überlagernden Symbolleistentitel

Ich habe versucht, Android hinzuzufügen: FitsSystemWindows = "true" sowohl für die AppBarLayout und der ViewPager, aber nichts geändert.

Unter dem Code verwendet und Snapshots die beiden Zustände zeigt:

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/sliding_tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMaxWidth="0dp" 
      app:tabGravity="fill" 
      app:tabMode="fixed"/> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

</android.support.design.widget.CoordinatorLayout> 

Status Bar without scroll applied

Status Bar with scroll applied

+1

hatte ich genau dieses gleiche Problem, und ich war in der Lage, es zu lösen, aber ich habe den Code nicht mit mir! Ein paar Möglichkeiten: a) 'fitsSystemWindows =" true "' auf deinem 'AppBarLayout', b) Füge einen' contentScrim' zu deiner 'AppBarLayout' oder' Toolbar' hinzu ('app: contentScrim =" @ color/primaryDark "'), oder c) Probieren Sie ein 'CollapsingToolbarLayout' anstelle von' AppBarLayout' aus, aber geben Sie ihm keine kollabierenden Scroll-Flags. Hoffe einer dieser hilft! –

Antwort

30

Bewertung das Thema für die Aktivität, wenn das Thema wie @ style/AppTheme.NoActionBar ist oder ein Thema ohne ActionBar, versuchen Sie, eine Farbe zu setzen, müssen Sie einen Stil (v21) etwas wie folgt haben:

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
    <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
    <item name="android:statusBarColor">@android:color/transparent</item>  
</style> 

Änderung es für:

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
    <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
    <item name="android:statusBarColor">@color/colorPrimaryDark</item> 
</style> 
+0

Super, es hat funktioniert, danke! – rauliyohmc

+1

Das ist in Ordnung, wenn Sie beispielsweise keine Navigationsleiste verwenden möchten, um mit einer transparenten Statusleiste zu zeigen ... – CaptRisky

+0

@CapRisky, was kann ich tun, wenn ich auch die Navigationsleiste verwenden möchte? – frozzyk

Verwandte Themen