2015-11-30 7 views
17

Ho riscontrato un problema durante l'utilizzo di Layout di Coordinatore che contiene un AppBarLayout (contenente una barra degli strumenti e un TabLayout) e un ViewPager (contenente frammenti) come elementi secondari. Voglio che la barra superiore sia nascosta durante lo scorrimento verso il basso e rivelata durante lo scorrimento indietro. Tuttavia quando scorro verso il basso, la barra di stato scorre anche, lasciando la barra in alto appena sotto le icone di stato, che viene sovrapposta.Barra di stato Android scorrendo verso l'alto con il layout del coordinatore, lasciando le icone di stato sovrapposte al titolo della barra degli strumenti

Ho provato ad aggiungere android: fitsSystemWindows = "true" a AppBarLayout e ViewPager ma nulla è cambiato.

Sotto il codice utilizzato e le istantanee che mostrano i due stati:

<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

ho avuto questo problema esattamente lo stesso, e sono stato in grado di risolverlo, ma non ho il codice con me! Alcune possibilità: a) 'fitsSystemWindows =" true "' sul tuo 'AppBarLayout', b) Aggiungi un' contentScrim' al tuo 'AppBarLayout' o' Toolbar' ('app: contentScrim =" @ color/primaryDark "'), oppure c) prova un 'CollapsingToolbarLayout' invece di' AppBarLayout', ma non dargli dei flag di scroll collassabili. Spero che uno di questi aiuti! –

risposta

30

Review il tema per l'attività, se il tema è come @ stile/AppTheme.NoActionBar o un tema senza ActionBar, prova a mettere un colore, devi avere uno stile (v21) qualcosa del genere:

<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> 

cambiamento per:

<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

Impressionante ha funzionato, grazie! – rauliyohmc

+1

Questo è ok se non si desidera utilizzare un cassetto di navigazione, ad esempio per mostrare con una barra di stato trasparente ... – CaptRisky

+0

@CaptRisky, cosa fare se si desidera utilizzare anche il cassetto di navigazione? – frozzyk