2016-01-12 50 views
5

如何以编程方式更改AppBarLayout的偏移量?AppBarLayout以编程方式更改偏移

当Activity首次加载时,我想要一定的偏移量到AppBarLayout(部分扩展),然后用户可以扩展它或折叠它。当前的行为是当Activity首次加载时它完全展开。

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> 

需要支持API 16+

谢谢!

回答

2

使用此:ScrollableAppBar

你只需要更换你的AppBarLayout有:

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

比:

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

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

输出:

enter image description here

+0

嗨米歇尔,谢谢你的回复!它完成这项工作!但是,我必须支持API 16+,我相应地更新了我的问题。 –

+0

我认为这是不可能的@AdamGhani –

+1

这就是whatsapp在用户个人资料上做的,谢谢 –