11

Ich stehe vor einem großen Bildlaufproblem mit ViewPager innerhalb CoordinatorLayout.Abruptes Scrollen mit NestedScrollView in ViewPager Fragment in einem CoordinatorLayout Android

Die aktuelle Szene:

  1. app:appbarScrollingViewBehaviour auf ViewPager gesetzt.
  2. Das ViewPager Fragment hat NestedScrollView als Stammelternteil.
  3. Das Fragmentlayout enthält Horizontal RecyclerView.
  4. Wenn ich nach oben scrollen, indem ich über RecyclerView berühre, scrollt die App-Leiste nicht, sondern nur verschachteltes Scrollen.
  5. Wenn ich scrollt, indem ich den Rest der Ansicht berühre, scrollt die CoordinatorLayout. 6) Auch das verschachtelte Scrollen stoppt in der Mitte und schneidet den Inhalt ab.

Was habe ich schon versucht:

  1. ViewPager innen NestedScrollView Putting und setzen app:appbarScrollingViewBehaviour Attribut NestedScrollView. Dies schließt den Fragment-Inhalt vollständig aus, da RecyclerView seine Höhe nicht bestimmen kann.
  2. Einstellung setAutoMeasureEnabled(true) auf RecyclerView, immer noch nicht in der Lage, Höhe zu beheben.
  3. Und viele andere Ansätze.

    Bitte helfen Sie bei diesem Problem. Das aktuelle Verhalten kann in hochgeladenen .gif angezeigt werden. Ich poste auch meinen Code für Aktivitätslayout und Fragmentlayout und RecyclerView Zeilenlayout.

Danke

activity.xml:

<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:Customs="http://schemas.android.com/apk/res-auto" 
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:background="@color/new_color_primary_skim"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/transparent"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsingLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     android:elevation="0dp" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     android:minHeight="?attr/actionBarSize"> 


     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:fitsSystemWindows="true" 
      app:layout_scrollFlags="scroll|enterAlways" 
      android:layout_height="?attr/actionBarSize"> 

      <FrameLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

       <ImageView 
        android:layout_width="30dp" 
        android:layout_height="30dp" 
        android:layout_gravity="center_vertical" 
        android:src="@drawable/ic_arrow_back" /> 



    <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:layout_gravity="center_horizontal" 
        android:gravity="center_vertical" 
        android:text="Workout" 
        android:textColor="#FFFFFF" 
        android:textSize="19sp" 
        android:textStyle="bold" 
        Customs:font="LatoRegular.ttf" /> 
      </FrameLayout> 

     </android.support.v7.widget.Toolbar> 


      <com.github.mikephil.charting.charts.LineChart 
       android:id="@+id/workout_insights_graph" 
       android:layout_width="match_parent" 
       android:layout_height="150dp" 
       android:layout_below="@+id/toolbar" 
       app:layout_scrollFlags="scroll|snap" 
       android:layout_marginTop="?attr/actionBarSize" 
       app:layout_collapseMode="parallax" 
       android:animateLayoutChanges="true" /> 

      <com.fitsquare.app.fitsquare.Entity.Customs.SlidingTabLayout 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_below="@+id/diet_insights_graph" 
       android:layout_height="50dp" 
       android:layout_gravity="bottom" 
       android:background="@color/transparent" /> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right|top" 
      android:layout_marginRight="-50dp" 
      android:layout_marginTop="-50dp" 
      android:src="@drawable/workout_translucent" /> 

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




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


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

pager_fragment.xml:

<?xml version="1.0" encoding="utf-8"?> 


<android.support.v4.widget.NestedScrollView  
xmlns:android="http://schemas.android.com/apk/res/android" 

xmlns:Customs="http://schemas.android.com/apk/res-auto" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:card_view="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<FrameLayout 
    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:paddingLeft="7dp" 
     android:paddingRight="7dp" 
     android:paddingTop="10dp"> 


     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:orientation="vertical"> 


      <LinearLayout 
       android:layout_width="100dp" 
       android:layout_height="4dp" 
       android:layout_marginTop="10dp" 
       android:alpha="0.5" 
       android:background="@drawable/round_gray_dark" 
       android:orientation="horizontal"></LinearLayout> 


      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="5dp" 
       android:gravity="center_vertical" 
       android:orientation="horizontal"> 


       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" 
        android:paddingLeft="10dp"> 


        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="10dp" 
         android:orientation="horizontal"> 


    <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="Target Calories to burn : " 
          android:textColor="@color/white" 
          android:textSize="14sp" 
          Customs:font="LatoRegular.ttf" /> 



<com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="2300" 
          android:textColor="@color/white" 
          android:textSize="14sp" 
          android:textStyle="bold" 
          Customs:font="LatoRegular.ttf" /> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="10dp" 
         android:orientation="horizontal"> 



<com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="Burned calories : " 
          android:textColor="@color/white" 
          android:textSize="14sp" 
          Customs:font="LatoRegular.ttf" /> 


    <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="2300" 
          android:textColor="@color/white" 
          android:textSize="14sp" 
          android:textStyle="bold" 
          Customs:font="LatoRegular.ttf" /> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="10dp" 
         android:orientation="horizontal"> 


    <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="Total workout time : " 
          android:textColor="@color/white" 
          android:textSize="14sp" 
          Customs:font="LatoRegular.ttf" /> 



    <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="20 mins" 
          android:textColor="@color/white" 
          android:textSize="14sp" 
          android:textStyle="bold" 
          Customs:font="LatoRegular.ttf" /> 
        </LinearLayout> 


       </LinearLayout> 

      </LinearLayout> 

      <LinearLayout 
       android:layout_width="100dp" 
       android:layout_height="4dp" 
       android:layout_marginTop="10dp" 
       android:alpha="0.5" 
       android:background="@drawable/round_gray_dark" 
       android:orientation="horizontal"></LinearLayout> 
     </LinearLayout> 


     <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
      android:id="@+id/textView27" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="20dp" 
      android:text="Today" 
      android:textColor="@color/white" 
      android:textSize="21sp" 
      Customs:font="LatoRegular.ttf" /> 

     <LinearLayout 
      android:layout_width="100dp" 
      android:layout_height="4dp" 
      android:layout_marginTop="5dp" 
      android:alpha="0.5" 
      android:background="@drawable/round_gray_dark" 
      android:orientation="horizontal"></LinearLayout> 


     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:orientation="vertical"> 

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/recycler_view" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 
     </android.support.v7.widget.RecyclerView> 


      <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
       android:id="@+id/textView31" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Tomorrow" 
       android:textColor="@color/white" 
       android:textSize="21sp" 
       Customs:font="LatoRegular.ttf" /> 

      <LinearLayout 
       android:layout_width="100dp" 
       android:layout_height="4dp" 
       android:layout_marginTop="5dp" 
       android:alpha="0.5" 
       android:background="@drawable/round_gray_dark" 
       android:orientation="horizontal"></LinearLayout> 


      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:paddingLeft="10dp"> 


       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="10dp" 
        android:orientation="horizontal"> 


     <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Target Calories to burn : " 
         android:textColor="@color/white" 
         android:textSize="14sp" 
         Customs:font="LatoRegular.ttf" /> 


     <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="2300" 
         android:textColor="@color/white" 
         android:textSize="14sp" 
         android:textStyle="bold" 
         Customs:font="LatoRegular.ttf" /> 
       </LinearLayout> 


       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="10dp" 
        android:orientation="horizontal"> 


     <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Total workout time : " 
         android:textColor="@color/white" 
         android:textSize="14sp" 
         Customs:font="LatoRegular.ttf" /> 


     <com.fitsquare.app.fitsquare.Entity.Customs.CustomFontTextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="20 mins" 
         android:textColor="@color/white" 
         android:textSize="14sp" 
         android:textStyle="bold" 
         Customs:font="LatoRegular.ttf" /> 
       </LinearLayout> 
      </LinearLayout> 

     </LinearLayout> 
    </LinearLayout> 

    <!-- <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clickable="true" 
     android:src="@color/transparent" />--> 
</FrameLayout> 

</android.support.v4.widget.NestedScrollView> 
+0

Also können Sie Ihr Problem im Detail erklären? Was willst du erreichen? – rom4ek

Antwort

9

ich die Lösung gefunden und das Problem selbst gelöst. Da das horizontale RecyclerView ein Kind der geschachtelten Scroll-Ansicht war, wurden Scroll-Ereignisse nicht an CoordinatorLayout übertragen. Ich habe es gerade gelöst, indem ich verschachteltes Scrollen mit dieser Codezeile deaktiviert habe.
recyclerView.setNestedScrollingEnabled(false);