2016-01-12 16 views
5

Come posso modificare l'offset di AppBarLayout a livello di codice?AppBarLayout modifica offset a livello di codice

Voglio un certo offset su AppBarLayout (parzialmente espanso) quando l'attività viene caricata per la prima volta, quindi l'utente potrebbe espanderlo di più o comprimerlo. Il comportamento attuale è che è completamente espanso quando viene caricato per la prima volta l'attività.

my.xml

<android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="300dp" 
     android:fitsSystemWindows="true" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:clickable="true" 
      android:fitsSystemWindows="true" 
      app:expandedTitleMarginEnd="64dp" 
      app:expandedTitleMarginStart="48dp" 
      app:layout_collapseParallaxMultiplier="0.7" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <FrameLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       app:layout_collapseMode="parallax"> 

       <ImageView 
        android:id="@+id/image" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:scaleType="centerCrop" 
        android:src="@drawable/pic"/> 

       <View 
        android:id="@+id/overlay" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:background="@drawable/overlay" 
        app:layout_collapseMode="pin"/> 
      </FrameLayout> 

      <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/ThemeOverlay.AppCompat.Light" 
       app:title="@string/app_name"/> 

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

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

necessità di sostenere API 16+

Grazie!

risposta

2

Utilizzare questa: ScrollableAppBar

Basta sostituire il AppBarLayout con:

<it.michelelacorte.scrollableappbar.ScrollableAppBar 
android:id="@+id/appbar" 
android:layout_width="match_parent" 
android:layout_height="380dp" 
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
android:fitsSystemWindows="true"> 
</it.michelelacorte.scrollableappbar.ScrollableAppBar> 

e rispetto:

ScrollableAppBar appBarLayout = (ScrollableAppBar) findViewById(R.id.appbar); 

//To give the effect "in the middle" of the image (like gif) 
appBarLayout.collapseToolbar(); 

uscita:

enter image description here

+0

Ciao Michele, grazie per la tua risposta! Fa il lavoro! ma, devo supportare l'API 16+, ho aggiornato la mia domanda di conseguenza. –

+0

Penso che non sia possibile @AdamGhani –

+1

è così che whatsapp l'ha fatto sul profilo utente, grazie –