android – 重叠滚动视图与AppBarLayout

我想实现从Material design scrolling techniques的“柔性空间与重叠内容”模式,如this video

我的XML布局现在看起来像:

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

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

    <android.support.design.widget.CollapsingToolbarLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

      <android.support.v7.widget.Toolbar
          android:layout_height="?attr/actionBarSize"
          android:layout_width="match_parent"
          app:layout_collapseMode="pin"/>
    </android.support.design.widget.CollapsingToolbarLayout>
  </android.support.design.widget.AppBarLayout>

  <android.support.v4.widget.NestedScrollView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
      <....>
    </LinearLayout>
  </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

有没有一个简单的方法来实现这个使用设计库?或者我必须建立一个自定义CoordinatorLayout.Behavior这样做吗?

最佳答案
事实上,使用AppBarLayout覆盖滚动视图是Android Design Support Library的一个包含的功能:您可以使用应用程序:behavior_overlapTop属性NestedScrollView(或任何视图使用ScrollingViewBehavior)设置重叠量:

<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    app:behavior_overlapTop="64dp">

请注意,app:behavior_overlapTop仅适用于具有以下应用程序的视图:layout_behavior =“@ string / appbar_scrolling_view_behavior”,因为它是使用属性的行为(而不是视图或父视图组,属性通常适用于),因此behavior_前缀。

或者通过编程方式通过setOverlayTop()

NestedScrollView scrollView = ...
CoordinatorLayout.LayoutParams params = 
    (CoordinatorLayout.LayoutParams) scrollView.getLayoutParams();
AppBarLayout.ScrollingViewBehavior behavior =
    (AppBarLayout.ScrollingViewBehavior) params.getBehavior();
behavior.setOverlayTop(128); // Note: in pixels

转载注明原文:android – 重叠滚动视图与AppBarLayout - 代码日志