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 есть полный пример использования андроида поддержка дизайна: Collapsing Toolbar FloatingActionButton Просмотр анкеровки NavigationView Закусочная. Надеюсь, что может вам помочь – darkangelo

+0

@ darkangelo Я внес некоторые изменения, основанные на примере, который вы дали, и есть некоторые улучшения. Это похоже на вторую картинку, но всякий раз, когда я просматриваю любой конец NestedScrollView, AppBarLayout перемещается, как 10dp. Тем не менее, он все равно не следует за прокруткой. Я задам еще один вопрос, поскольку исходная проблема, похоже, несколько решена. – MrHappy

ответ

0

Это случилось со мной.

Во-первых, я удалил <include> и добавил панель инструментов вручную.

Это все еще случалось, поэтому после некоторых попыток я обнаружил, что это происходит потому, что моя панель инструментов имела minimumHeight, но layout_height=wrap_content. Я изменил его на , и он сработал. Вот мой пример. (The 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>