1

我試圖使用AppBarLayout + CollapsingToolbarLayout來創建一個可摺疊的工具欄,圖像在滾動但工具欄仍然存在時會消失。AppBarLayout/CollapsingToolbarLayout無限擴大

問題是當我同時設置AppBarLayout & CollapsingToolbarLayout android:layout_height = "wrap_content"時,工具欄會填滿整個屏幕。 http://i.stack.imgur.com/be1m6.png

當我設置android:layout_height = "200dp"時,高度是固定的,但它不適用於NestedScrollView並調整大小。 http://i.stack.imgur.com/MTao2.png

這裏的XML:

<android.support.design.widget.CoordinatorLayout 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/articleLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.gmail.senokt16.bosphoruschronicle.ArticleActivity"> 

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

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/articleCollapsingToolbar" 
      android:layout_width="match_parent" 
      android:layout_height="200dp" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      app:toolbarId="@+id/article_app_bar"> 

      <ImageView 
       android:id="@+id/articleActivityImage" 
       android:layout_width="match_parent" 
       android:layout_height="200dp" 
       android:minHeight="100dp" 
       app:layout_collapseMode="parallax" 
       app:layout_collapseParallaxMultiplier="0.7" 
       app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed" 
       android:fitsSystemWindows="true"/> 

      <include 
       android:id="@+id/article_app_bar" 
       android:fitsSystemWindows="true" 
       layout="@layout/article_app_bar" /> 
     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 

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

     <TextView 
      android:id="@+id/articleActivityContents" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="30dp" 
      android:paddingLeft="20dp" 
      android:paddingRight="20dp" 
      android:paddingTop="5dp" /> 
    </android.support.v4.widget.NestedScrollView> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/articleFAB" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_margin="16dp" 
     android:src="@android:drawable/ic_menu_share" /> 


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

你好MrHappy我建議你去看一下在GitHub上這個項目的外觀極好https://github.com/chrisbanes/cheesesquare有采用了android的一個完整的例子支持設計庫,包括使用: 摺疊工具欄 FloatingActionButton 視圖錨定 NavigationView 小吃店。 希望能夠幫到你 – darkangelo

+0

@darkangelo我根據你給出的例子做了一些改變,並且有一些改進。這就像第二張圖片,但每當我滾動到NestedScrollView的任一端時,AppBarLayout就會像10dp一樣移動。它仍然沒有正確的滾動。由於原始問題似乎有所解決,我會再提出一個問題。 – MrHappy

回答

0

這也發生在我身上。

首先,我刪除了<include>並手動添加了工具欄。

它仍然發生,所以經過一番搗鼓之後,我發現它發生是因爲我的工具欄有minimumHeight,但是layout_height=wrap_content。我將它更改爲,它工作。這是我的例子。 (該FrameLayout裏有像你這樣nestedscrollview內。)

<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="wrap_content" 
      android:fitsSystemWindows="true"> 

      <android.support.design.widget.CollapsingToolbarLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       app:contentScrim="?attr/colorPrimary" 
       app:layout_scrollFlags="scroll|exitUntilCollapsed" 
       app:titleEnabled="false"> 

       <ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        app:layout_collapseMode="parallax" 
        android:src="@drawable/logo" 
        /> 

       <android.support.v7.widget.Toolbar 
        android:id="@+id/toolbar" 
        android:layout_width="match_parent" 
        android:layout_height="?attr/actionBarSize" 
        app:layout_collapseMode="pin" 
        android:background="@android:color/transparent"/> 

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

     <FrameLayout 
      android:id="@+id/content_frame" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

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