2015-09-27 135 views
1

這讓我感到非常緊張。我一直在努力做這項工作兩天,並沒有取得任何進展。當我向下滾動ViewPager並顯示滾動ViewPager時,我想要一個隱藏的應用程序欄,這似乎是執行此操作的標準方法。CoordinatorLayout不隱藏操作欄

<android.support.design.widget.CoordinatorLayout 
    android:id="@+id/main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
       app:layout_collapseMode="pin" /> 

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

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

      <android.support.design.widget.TabLayout 
       android:id="@+id/posts_pager_header" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       app:tabMode="scrollable" 
       app:layout_collapseMode="pin"> 
      </android.support.design.widget.TabLayout> 
     </android.support.design.widget.CollapsingToolbarLayout> 

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/posts_pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 


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

viewpager包含一堆包含listview的碎片。我正在使用appcompat和版本22.2.0的設計。

我把我的代碼和這裏的代碼進行了比較:[email protected]:slidenerd/Android-Design-Support-Library-Demo.git,沒有發現什麼重大區別。有人可以幫忙嗎?謝謝。如果我沒有用盡所有選項,我不會發布這個。

+0

你不需要'CollapsingToolbarLayout'嗎? –

+0

你可以澄清「向上/向下滾動」你的ViewPager嗎?你的意思是在你的ViewPager中左右滑動或者在你的ListView中上下滾動? –

+0

@MarkusRubey向上/向下滾動將位於ViewPager的ListView中。向左和向右滾動切換ViewPager中的當前項目現在按預期工作。 –

回答

1

我做了一些測試,這裏是我的發現:

你原本(不CollapsingToolbarLayout)的佈局更接近。我調整了佈局,並用它測試:

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
      app:layout_scrollFlags="scroll|enterAlways" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/posts_pager_header" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMode="scrollable" /> 

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/posts_pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

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

因此,這裏的要點:

  • CoordinatorLayout都必須有一個AppBarLayout和另外一個孩子的佈局。
  • AppBarLayout必須具有Toolbar和/或TabLayout
  • app:layout_scrollFlags="scroll|enterAlways"屬性發送到Toolbar和/或TabLayout

    無論佈局有沒有scrollflags(或兩者)將滾動出視圖。所以我不知道你是否想Toolbar滾動和而不是TabLayout,但無論哪種方式,你可以控制行爲。

  • 您不能使用ListView作爲滾動視圖。即使在您的ViewPager片段中。添加app:layout_behavior="@string/appbar_scrolling_view_behavior"屬性沒有區別。您需要使用RecyclerViewNestedScrollView。奇怪的是,我並不需要RecyclerView上的app:layout_behavior="@string/appbar_scrolling_view_behavior"屬性。這是在Fragment的子類別ViewPager的內部。

+0

>您必須使用RecyclerView或NestedScrollView。奇怪的是,我並不需要RecyclerView上的app:layout_behavior =「@ string/appbar_scrolling_view_behavior」屬性。這是在ViewPager的Fragment子類中。 嗯,讓我測試一下。謝謝! –

+0

謝謝!它現在有效。我需要做的就是從'ListView'切換到'RecyclerView'。你已經做了我最好的下午之一! –