5

Ho giocato con la libreria di supporto di progettazione e ho riscontrato un piccolo problema che spero che qualcuno possa aiutarmi.Viewpager non viene visualizzato quando si utilizza CollapsingToolbarLayout

Sto usando un CollapsingToolbar che contiene un ImageView che collassa in parralax. In CollapsingToolbar, ho anche un TabLayout che dovrebbe scorrere il mio ViewPager. Il mio problema è che il ViewPager non appare. Il problema sembra sorgere solo quando ho impostato il mio ViewPager layout_height per match_parent o wrap_content. Se lo metto a 600dp, il problema non c'è, ma la vista finisce per essere una lunghezza fissa che non è molto bella.

Qualsiasi aiuto sarebbe apprezzato!

Ecco la mia 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/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/detail_backdrop_height" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    android:fitsSystemWindows="true" 
    > 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     > 

     <ImageView 
      android:id="@+id/backdrop" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:layout_collapseMode="parallax" 
      android:src="@drawable/stock_image"/> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      android:layout_gravity="top" 
      /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom"/> 

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

    </android.support.design.widget.AppBarLayout> 
    <android.support.v4.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     > 

     <android.support.v4.view.ViewPager 
      android:id="@+id/viewpager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@android:color/white" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" 
      /> 
    </LinearLayout> 
    </android.support.v4.widget.NestedScrollView> 

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

risposta

8

è necessario rimuovere il livello NestedScrollView e LinearLayout tra il CoordinatorLayout e ViewPager:

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

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

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

la vista con app:layout_behavior="@string/appbar_scrolling_view_behavior deve essere un figlio diretto di CoordinatorLayout da posizionare correttamente in relazione allo AppBarLayout.

+0

La rimozione di questi 'NestedScrollView' e' LinearLayout' risolve il problema che il 'ViewPager' è ora visibile. Tuttavia, sorge un altro problema: non riesco a scorrere il 'ViewPager' verticalmente, ecco perché ho avuto quelle viste lì in primo luogo. Qualche suggerimento per risolverlo? – Adam

+1

@Adam: è possibile aggiungere un 'NestedScrollView' a ciascuna pagina se necessario. – ianhanniballake

+2

Grazie per il vostro aiuto. Ho finito per mettere NestedScrollViews nei frammenti del mio ViewPager invece che attorno al ViewPager stesso e ha fatto il lavoro! – Adam