9

Sto sviluppando un'applicazione Android utilizzando la nuova libreria di progettazione. Vorrei creare un simile effetto di scorrimento che viene utilizzato nel nuovo Google Photos app. Vorrei che AppBarLayout scendesse completamente dallo schermo in modo che la vista del riciclatore scorresse dietro la barra di stato.Come far scomparire completamente AppBarLayout con windowTranslucentStatus impostato su true

Ho impostato windowTranslucentStatus su true nel tema dell'app. Ecco il xml del l'attività principale:

<?xml version="1.0" encoding="utf-8"?> 
<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.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_scrollFlags="scroll|enterAlways" /> 

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

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

Ecco come si presenta quando scorrere verso il basso: Toolbar not disappearing completely

La barra degli strumenti non sparire completamente.

Grazie per l'aiuto!

+1

Sto cominciando a chiedersi se anche usato il CoordinatorLayout ... I' Sono rimasto bloccato su questa domanda esatta per tutto il giorno. – timothyjc

+0

@timothyjc Se trovi una soluzione prima di me, puoi postarla qui. E penso che tu abbia ragione sì – alesko007

+0

Ho caricato il mio progetto di esempio su github nel caso qualcuno volesse vedere facilmente il problema ... https://github.com/timothyjc/TestALot – timothyjc

risposta

0

Questo era quanto di più vicino ho potuto ottenere con la CoordinatorLayout (solo giocando con i margini sulla barra degli strumenti) ... non abbastanza vicino imo:

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


<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:paddingTop="25dp" 
     android:layout_width="match_parent" 
     android:layout_height="81dp" 
     android:layout_marginTop="-28dp" 
     android:background="#00ffffff" 
     app:layout_scrollFlags="scroll|enterAlways" /> 

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

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recyclerview" 
    android:background="#ffffff" 
    android:fitsSystemWindows="true" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 


<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="end|bottom" 
    android:layout_margin="16dp" 
    android:src="@drawable/ic_headphones_white_24dp" /> 

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

penso che sarà più facile per farlo manualmente ...

Avete idee o progressi?

+0

Sto provando a calcolare qualcosa con l'impostazione dell'altezza e dei margini per il layout del coordinatore. Tuttavia questo sta creando nuovi problemi. L'hai capito? – alesko007

+0

Un tizio su Reddit mi ha detto che c'è un bug e verrà risolto la prossima versione del lib di supporto. Ho finito per fare tutte le animazioni manualmente. – timothyjc

+0

@timothyjc fitsSystemWindows deve essere anche su AppBarLayout. E android: windowDrawsSystemBarBackgrounds = true dovrebbe essere lì in v.-21 styles.xml Questo è quello che ho fatto per farlo funzionare. – Suleiman19

-1

Aggiungi fitsSystemWindows = "true" per AppBarLayout e CoordinatorLayout.


+0

Che non funziona – alesko007

+0

Ciò non rende la barra degli strumenti trasparente. –

0

Nel mio caso ho aggiunto fitSystemWindows = "false" per CoordinatorLayout e fitSystemWindows = "true" per il suo bambino - nel tuo caso al RecyclerView. Su NavigationView, DrawerLayout, AppBarLayout e Toolbar è "vero". Ho provato diversi valori e poi qualcosa si è rotto nel mio caso. Android 5.1.1 e le ultime librerie di supporto (23.0.1). Spero che sia d'aiuto.

1

Ecco quello che ho usato nella mia applicazione

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/app_bar_height" 
    android:fitsSystemWindows="true" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/toolbar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlwaysCollapsed"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

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

Uso modello comune di AppBarLayout che viene dal modello di applicazione quando si crea un progetto Android in Android Studio. A pochi cambiamenti nel layout XML e codice Java:

layout

XML:

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay" 
    > 

    <FrameLayout 
     android:id="@+id/toolbar_container" 
     android:fitsSystemWindows="true" 
     app:layout_scrollFlags="scroll|enterAlways" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     > 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/AppTheme.PopupOverlay" 
      /> 

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

del codice Java:

ViewCompat.setOnApplyWindowInsetsListener(toolbar, new OnApplyWindowInsetsListener() { 
     @Override 
     public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { 
      toolbarContainerLayout.setPadding(0, insets.getSystemWindowInsetTop(), 0, 0); 

      return insets; 
     } 
    }); 
Problemi correlati