5

我想複製google play音樂android應用程序的行爲。 在該應用程序中,當您使用「我的音樂」專輯選項卡時,專輯列表將以「延伸」形式在動作欄(橙色部分)上開始。當您向上滾動相冊列表時,橙色部分向上滾動但比列表更慢。 當您向下滾動列表時,「橙色塊」也會向下滾動。 此行爲與正在滾動的工具欄和選項卡無關。NestedScrollview重疊CollapsingToolbarLayout喜歡gmusic應用程序

我試圖用新的材料設計庫重現這種行爲。 從Cheesquare使用爲出發點,詳細活動的xml:

<android.support.design.widget.CoordinatorLayout 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 
    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/detail_backdrop_height" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     android:fitsSystemWindows="true"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"  
       app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginStart="48dp" 
      app:expandedTitleMarginEnd="64dp"> 

     <ImageView 
      android:id="@+id/backdrop" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scaleType="centerCrop" 
      android:fitsSystemWindows="true" 
      app:layout_collapseMode="parallax" /> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      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" 
      android:paddingTop="24dp"> 
     <....> 
     </LinearLayout> 
    </android.support.v4.widget.NestedScrollView> 
</android.support.design.widget.CoordinatorLayout> 

我曾嘗試使用背景「ImageView的」用彩色背景,並試圖將它移到旁邊的nestedview。 如果我把imageview放在CollapsingToolbarLayout裏面的視差效果,問題是我不能讓它的高度在嵌套滾動視圖下。 如果我把imageview放在collapsingToolbarLayout之外但在NestedScrollView中,我不能改變viewScrolling的「速度」。 如果我把圖像視圖放在NestedScrollview之外,即使工具條被打開,它也會被拖到工具欄上。

在材質設計庫之前,我使用scrollview的視圖和回調來上下移動它,但是我想使用新庫,因爲它非常乾淨,刪除了很多樣板代碼。

任何想法?

回答

7

事實上,與AppBarLayout覆蓋滾動視圖不需要任何的是:你可以使用app:behavior_overlayTop屬性您NestedScrollView設置重疊量:

<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僅適用於具有app: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 
+0

這樣就解決了有過「工具欄中的」滾動視圖,但在gmusic,工具欄「splited」這兩個部分:正常的工具欄隱藏作爲「材料設計規格」,以及位於滾動視圖下的「擴展」工具欄,並向上滾動比scrool視圖慢。所以當你向上滾動時,「常規」工具欄隱藏,另一個仍在顯示。當您向下滾動時,「正常」工具欄顯示的高程超過「滾動視圖+擴展工具欄」,當滾動爲0時,正常和擴展混合。 – gpulido

+0

@ianhanniballake攔截觸摸事件嵌套滾動查看EditTexts和Spinners。我有編輯文本和Spinners幾個佈局。嵌套滾動視圖不能平滑滾動。 –

+0

'app:behavior_overlayTop'應該是'app:behavior_overlapTop' –

相關問題