2

我有搜索堆棧溢出之前,但還沒有找到我的問題的適當答案。在ViewPager中切換頁面時顯示工具欄

我有一個Android應用程序,其內部有一個嵌套ViewPager的協調器佈局。如果我滾動View分頁器中第一個片段內的RecyclerView,工具欄將隱藏並按預期顯示。不過,我在ViewPager中的其他片段沒有嵌套滾動,所以我想顯示工具欄,如果它在ViewPager頁面更改中隱藏。我想知道我是否可以擴展CoordinatorLayout行爲來使其很好地完成。

在此先感謝!如果需要,我會很樂意提供更多細節。

近似代碼(試圖去除所有不需要的東西):main_activity.xml

<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/coordinator_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 
    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar" 
     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" 
      app:layout_scrollFlags="scroll|enterAlways" /> 
     <android.support.design.widget.TabLayout 
      android:id="@+id/tab_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/toolbar" /> 
    </android.support.design.widget.AppBarLayout> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/tab_layout" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 
</android.support.design.widget.CoordinatorLayout> 

以及滾動片段:fragment.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true"> 

<android.support.v7.widget.CardView 
    android:id="@+id/add_word_card" 
    android:orientation="horizontal" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent"> 
    <RelativeLayout 
     android:id="@+id/add_word_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/highlight"> 
     <!-- some unrelated stuff --> 
    </RelativeLayout> 
</android.support.v7.widget.CardView> 
<android.support.v7.widget.RecyclerView 
     android:id="@+id/list" 
     android:layout_below="@id/add_word_card" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:context=".MainActivity"/> 

我已經發現了幾個相關問題如:thisthis。但他們主要關注佈局問題,而我想了解是否真的有一個很好的解決方案來按需觸發工具欄移動。

回答

5

如此看來,答案是:包裹ToolbarAppBarLayout,並在代碼中使用類似:appBarLayout.setExpanded(false, true);

這是否把戲對我來說。