2017-06-22 139 views
0

enter image description here垂直RecyclerView反应嵌套水平RecyclerView

滚动在我的活动,我有ViewPager组成的片段。我已使用CustomViewPager禁用ViewPager上的滑动动作。

我的片段布局有Vertical RecyclerView,在这个RecyclerView里面有多个Horizo​​ntal RecyclerViews。

为了确保我的AppBarLayout正确响应滚动行为,我在每个Horizo​​ntal RecyclerView上以编程方式将nestedScrollingEnabled设置为false。

P.S.我正在使用recylerview版本25.4.0

问题是因为你可以在上面附上的gif中看到,滚动水平recyclerview触摸应该是完美的横向,即使对水平recyclerview稍微倾斜的议案,vertical recyclerview选择up事件并垂直滚动页面UP & DOWN。如何解决这个问题?

CustomViewPager.java

public class CustomViewPager extends ViewPager { 

    private boolean enabled; 

    public CustomViewPager(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.enabled = true; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (this.enabled) { 
      return super.onTouchEvent(event); 
     } 

     return false; 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 
     if (this.enabled) { 
      return super.onInterceptTouchEvent(event); 
     } 

     return false; 
    } 

    public void setPagingEnabled(boolean enabled) { 
     this.enabled = enabled; 
    } 
} 

片段布局

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recyclerview_productoverview" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/windowBackground"/> 

内部recyclerview_productoverview项的布局(垂直RecyclerView)

<android.support.constraint.ConstraintLayout 
    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:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.constraint.ConstraintLayout 
     android:id="@+id/layout_section_header" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="0dp" 
     android:background="#ebedff" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent"> 

     <experttag.nurserylive.util.ui.widget.WhitneySemiBoldTextView 
      android:id="@+id/textview_item_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="16dp" 
      android:text="TOP FEATURED" 
      android:textColor="#3f4266" 
      android:textSize="16sp" 
      app:layout_constraintTop_toTopOf="parent" 
      app:layout_constraintBottom_toBottomOf="parent" 
      android:layout_marginBottom="16dp" 
      app:layout_constraintVertical_bias="0.19" 
      android:layout_marginLeft="16dp" 
      app:layout_constraintLeft_toLeftOf="parent" 
      android:layout_marginRight="16dp" 
      app:layout_constraintRight_toRightOf="parent"/> 

     <experttag.nurserylive.util.ui.widget.WhitneySemiBoldTextView 
      android:id="@+id/textview_item_viewall" 
      style="@style/AppTheme.TextLink" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#3f4266" 
      android:text="@string/btn_view_all_caps" 
      android:layout_marginRight="16dp" 
      app:layout_constraintRight_toRightOf="parent" 
      app:layout_constraintBaseline_toBaselineOf="@+id/textview_item_name"/> 
    </android.support.constraint.ConstraintLayout> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerview_item_section" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/layout_section_header"/> 

</android.support.constraint.ConstraintLayout> 

水平RecyclerView:@ ID/recyclerview_item_section

回答

相关问题