11

CoordinatorLayoutの大きなスクロールの問題に直面しています。ViewPagerでNestedScrollViewを使ってスクロールしていて、コーディネータの中の断片がありません.Layout Android

現在のシーン:

  1. app:appbarScrollingViewBehaviourViewPagerに設定されています。
  2. ViewPagerフラグメントは、そのルート親としてNestedScrollViewを有する。
  3. フラグメントのレイアウトには、水平RecyclerViewが含まれています。
  4. RecyclerViewをタッチしてスクロールすると、アプリバーがスクロールせず、代わりにネストされたスクロールのみが発生します。
  5. 残りのビューをタッチしてスクロールすると、CoordinatorLayoutがスクロールします。 6)また、ネストされたスクロールが途中で停止し、内容が切り捨てられます。
  6. 私はすでに試してみました何

  1. NestedScrollView内部ViewPagerを置くとNestedScrollViewapp:appbarScrollingViewBehaviour属性を設定します。これにより、フラグメントの内容が完全に切断され、RecyclerViewはその高さを決定できません。
  2. RecyclerViewsetAutoMeasureEnabled(true)を設定しても、まだ高さを固定できません。
  3. そして他の多くのアプローチ。

    この問題のお手伝いをしてください。現在の動作はアップロードされた.gifで確認できます。私はまた、アクティビティレイアウトとフラグメントレイアウトとRecyclerView行レイアウトの私のコードを掲載しています。

あなた

activity.xmlありがとう:pager_fragment.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> 

を:

<?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

あなたは問題を詳しく説明できますか?あなたは何を達成したいですか? – rom4ek

答えて

9

私は解決策を発見し、問題を自分で解決しました。水平RecyclerViewはネストされたスクロールビューの子であったため、スクロールイベントをCoordinatorLayoutに転送していませんでした。このコード行を使ってネストされたスクロールを無効にするだけで解決しました。

recyclerView.setNestedScrollingEnabled(false);

関連する問題