3

我有包含片段的AppCompatActivity和它控制許多片段的替換。我想根據要顯示的片段顯示不同的工具欄。CollapsingToolbarLayout在片段

這是main_activity.xml代碼:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.inthecheesefactory.lab.designlibrary.activity.MainActivity"> 

<android.support.design.widget.CoordinatorLayout 
    android:id="@+id/rootLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBarLayout" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/app_bar_height" 
     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" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginStart="@dimen/expanded_toolbar_title_margin_start" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <ImageView 
       android:id="@+id/image" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scaleType="centerCrop" 
       app:layout_collapseMode="parallax" 
       app:layout_collapseParallaxMultiplier="0.7" /> 

      <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:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 

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

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

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

     <FrameLayout android:id="@+id/container" 
      android:layout_width="match_parent" 
      android:clickable="true" 
      android:layout_height="match_parent" 
      android:layout_below="@+id/appBarLayout"/> 

    </android.support.v4.widget.NestedScrollView> 


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

<android.support.design.widget.NavigationView 
    android:id="@+id/navigation_view" 
    android:layout_height="match_parent" 
    android:layout_width="wrap_content" 
    android:fitsSystemWindows="false" 
    android:layout_gravity="start" 
    app:headerLayout="@layout/nav_header_main" 
    app:menu="@menu/drawer_menu_login" 
    /> 

</android.support.v4.widget.DrawerLayout> 

這段代碼的AppBarLayout被摺疊與colorPrimary的背景。我想在一些片段中禁用這個摺疊,在另一個片段中,我需要它在CollapsingToolBarLayout的ImageView中顯示一個圖像。 它工作正常的片段有一個圖像在AppBarLayout崩潰,但在沒有任何圖像崩潰的片段我想取消崩潰顯示一個正常的工具欄沒有任何展開,是否有可能??

在此先感謝。

回答

3

我做了克里斯·貝恩的Cheesesquare演示,但使用片段的version

Video Demo

CheeseCategoriesFragment

基本上,在片段的onActivityCreated方法調用,這些方法取決於你是否要崩潰與否。

public void disableCollapse() { 
    imageView.setVisibility(View.GONE); 
    tabLayout.setVisibility(View.VISIBLE); 
    collapsingToolbar.setTitleEnabled(false); 
} 

public void enableCollapse() { 
    imageView.setVisibility(View.VISIBLE); 
    tabLayout.setVisibility(View.GONE); 
    collapsingToolbar.setTitleEnabled(true); 
} 
+0

非常感謝你!!!!這正是我需要控制崩潰。謝謝!! :) – Pamela

+0

剛剛遇到這個。這完美的作品! – spectre10

+0

@Oliver你能看看我的問題嗎?我想你的代碼,但它崩潰https://stackoverflow.com/questions/40922102/android-collapsing-layout-with-parallax-effect-for-fragments-crashes – Suisse