5

Wie kann die Werkzeugleiste nach dem Reduzieren ausgeblendet werden, während RecyclerView nach unten scrollt, Werkzeugleiste anzeigen, wenn RecyclerView nach oben scrollt, und CollapsingToolbarLayout am Ende der Liste erweitern? CollapsingToolbarLayout wird jetzt minimiert, und die Symbolleiste wird beim Scrollen immer angezeigt.So blenden Sie die Werkzeugleiste nach dem Reduzieren aus, während RecyclerView nach unten scrollt

<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/coordinatorlayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".screens.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbarlayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:fitsSystemWindows="true" 
     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" 
      android:fitsSystemWindows="true" 
      android:minHeight="@dimen/actionBarHeight" 
      app:contentScrim="@color/colorPrimary" 
      app:expandedTitleTextAppearance="@style/TransparentText" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <ImageView 
       android:id="@+id/toolbar_image" 
       android:layout_width="match_parent" 
       android:layout_height="180dp" 
       android:adjustViewBounds="true" 
       android:background="#229944" 
       android:contentDescription="@null" 
       android:scaleType="fitCenter"/> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="@dimen/actionBarHeight" 
       android:minHeight="@dimen/actionBarHeight" 
       app:layout_collapseMode="pin" 
       app:layout_scrollFlags="scroll|enterAlwaysCollapsed" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

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

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:layout_gravity="bottom" 
      app:layout_scrollFlags="scroll" /> 

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

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

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

entfernt möglicherweise 'app: layout_collapseMode =" pin "sollte funktionieren. Nur eine Idee. –

Antwort

1

Sie können das Verhalten der Symbolleiste ändern. Sie können Bildlaufverhalten durch Ändern von layout_scrollFlags bereitstellen.

app:layout_scrollFlags="scroll|enterAlways" 

pin entfernen und diese Änderung in Ihrer Toolbar machen und es würde funktionieren!

+0

Es funktioniert nicht ( – preceptron

0
  • Hinzufügen android:fitsSystemWindows="true" in CoordinatorLayout.
  • Entfernen von Toolbar.
  • Verschieben TabLayout innerhalb CollapsingToolbarLayout.

    <android.support.design.widget.AppBarLayout 
        android:id="@+id/appbarlayout" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:fitsSystemWindows="true" 
        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" 
         android:fitsSystemWindows="true" 
         android:minHeight="@dimen/actionBarHeight" 
         app:contentScrim="@color/colorPrimary" 
         app:expandedTitleTextAppearance="@style/TransparentText" 
         app:layout_scrollFlags="scroll|exitUntilCollapsed"> 
    
         <ImageView 
          android:id="@+id/toolbar_image" 
          android:layout_width="match_parent" 
          android:layout_height="180dp" 
          android:adjustViewBounds="true" 
          android:background="#229944" 
          android:contentDescription="@null" 
          android:scaleType="fitCenter"/> 
    
         <android.support.v7.widget.Toolbar 
          android:id="@+id/toolbar" 
          android:layout_width="match_parent" 
          android:layout_height="@dimen/actionBarHeight" 
          android:minHeight="@dimen/actionBarHeight" 
          app:layout_collapseMode="pin" 
          app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 
    
         <android.support.design.widget.TabLayout 
          android:id="@+id/tabs" 
          android:layout_width="match_parent" 
          android:layout_height="?attr/actionBarSize" 
          android:layout_gravity="bottom" 
          app:layout_scrollFlags="scroll" /> 
    
        </android.support.design.widget.CollapsingToolbarLayout> 
    
    </android.support.design.widget.AppBarLayout> 
    
    <android.support.v7.widget.RecyclerView 
        android:id="@+id/content" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 
    

+0

Es funktioniert nicht (Toolbar trotzdem angezeigt. Und TabBar Overlay-Symbolleiste, da CollapsingToolbarLayout FrameLayout ist. – preceptron

+0

@preceptron in Ihrem Code, es zeigt keine Anzeichen von 'FrameLayout' –

2

Dies sollte perfekt funktionieren. Getestet und Arbeiten in API 17

<android.support.design.widget.CoordinatorLayout 
    android:id="@+id/careers_coordinator_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    tools:context=".activity.CareersActivity" 
    xmlns:tools="http://schemas.android.com/tools"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:fitsSystemWindows="true" 
     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="wrap_content" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"> 

      <ImageView 
       android:id="@+id/background" 
       android:layout_width="match_parent" 
       android:layout_height="256dp" 
       android:scaleType="centerCrop" 
       android:fitsSystemWindows="true" 
       app:layout_collapseMode="parallax" 
       android:src="@drawable/placeholder"/> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:contentScrim="?attr/colorPrimary" 
       android:fitsSystemWindows="true" 
       app:titleTextColor="@color/main_color_white" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
       app:layout_collapseMode="pin"/> 

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

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="?attr/colorPrimary" 
      app:tabIndicatorColor="@color/colorAccent" 
      app:tabSelectedTextColor="@color/colorAccent" 
      app:tabTextColor="@android:color/white" 
      app:tabIndicatorHeight="4dp" 
      app:tabMode="fixed"/> 

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

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

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

Für CollapsingToolbarLayout Verwendung scroll Fahnen:

app:layout_scrollFlags="scroll|enterAllwaysCollapsed" 

dieses Flag Kombination Symbolleiste verschwindet beim Scrollen nach unten. Und CollapsingToolbarLayout wird vollständig erweitert, wenn Sie zum Anfang der Liste blättern.

Und keine Notwendigkeit app:layout_collapseMode="pin" von Toolbar, zu entfernen, weil collapseMode Flags sind innerhalb CollapsingToolbarLayout Verhalten und die Platzierung der Ansichten zu definieren und tatsächliche Kollabieren und Expansion nicht von CollapsingToolbarLayout bewirken.