2017-10-08 3 views
0

J'ai un groupe horizontal RecycleViews à l'intérieur d'un SwipeRefreshLayout et j'ai du mal à glisser le Recycleviews au début de la page car il ne cesse de l'arrêter et de détecter un coup de rafraîchissement.Android SwipeRefreshLayout arrête RecycleView à partir du défilement

Comment empêcher que cela ne se produise?

Ou existe-t-il un moyen de déclencher l'actualisation uniquement si vous ne balayez pas?

Aussi, est-ce la meilleure façon de mettre en œuvre la disposition souhaitée?

<android.support.v4.widget.SwipeRefreshLayout 
    android:id="@+id/activity_main_swipe_refresh_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

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

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

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_marginBottom="70dp" 
       android:isScrollContainer="false" 
       android:orientation="vertical"> 


       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:background="@drawable/block_border" 
        android:orientation="vertical"> 

        <TextView 
         android:id="@+id/trending_episodes_title" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" /> 

        <!--This is the first affected recycle --> 

        <android.support.v7.widget.RecyclerView 
         android:id="@+id/trendingEpisodesRecycle" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:clipToPadding="false" 
         android:orientation="horizontal" /> 

       </LinearLayout> 


       <!--This is the Second affected recycle --> 

       <android.support.v7.widget.RecyclerView 
        android:id="@+id/allNewsRecycle" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="@dimen/title_top" 
        android:clipToPadding="false" 
        android:orientation="horizontal" /> 

       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:background="@drawable/block_border" 
        android:orientation="vertical"> 

        <TextView 
         android:id="@+id/moods_title" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 

         android:layout_marginTop="@dimen/title_top" 
         android:textColor="@color/colorBlack" 
         android:textSize="20sp" 
         android:textStyle="bold" /> 

        <android.support.v7.widget.RecyclerView 
         android:id="@+id/moodsRecycle" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:clipToPadding="false" 
         android:orientation="horizontal" /> 

       </LinearLayout> 
      </LinearLayout> 
     </RelativeLayout> 
    </ScrollView> 
</android.support.v4.widget.SwipeRefreshLayout> 

Répondre

0

Ok je donc résolu ce problème en désactivant le SwipeRefreshLayout lorsque le RecycleView est touché, et de réactiver à nouveau une fois que l'utilisateur a lâché le RecycleView.

Bellow sont le code pour que de mon programme:

 MyRecycleView.addOnScrollListener(new RecyclerView.OnScrollListener() { 

      @Override 
      public void onScrollStateChanged(final RecyclerView recyclerView, int newState) 
      { 

       super.onScrollStateChanged(recyclerView,newState); 
       if (newState != RecyclerView.SCROLL_STATE_IDLE) { // on scroll stop 
        mSwipeRefreshLayout.setEnabled(false); 
       } 
       else 
       { 
        mSwipeRefreshLayout.setEnabled(true); 
       } 

      } 
}