嵌套卧式RecyclerView

时间:2019-02-22 10:31:27

标签: android android-recyclerview nested recyclerview-layout nestedrecyclerview

我想创建一个嵌套的RecyclerView,其中Parent RV是具有> 3个项目的水平布局管理器,而子级也是horzinotl,但是我不能滚动它的子级,它仅指示父级手势。

父级LayoutManager

 LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
    listItem.setLayoutManager(layoutManager);
    listItem.setAdapter(adapter);

子LayoutManager

 RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
    list.setHasFixedSize(true);
    list.setLayoutManager(layoutManager);
    list.setItemAnimator(new DefaultItemAnimator());
    list.setAdapter(adapter);

XML-父级

  <androidx.cardview.widget.CardView
        android:id="@+id/card"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/list_item"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clipToPadding="false" />

    </androidx.cardview.widget.CardView>

XML-父项

     <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/roundColor_svprogresshuddefault"
    android:elevation="160dp"
    android:padding="@dimen/home_cell_margin">


                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/list_item"
                    android:layout_width="wrap_content"
                    android:layout_height="150dp"
                    android:layout_gravity="center"
                    android:nestedScrollingEnabled="false" />
 </androidx.constraintlayout.widget.ConstraintLayout>

XML-子

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listHolder">
    <ImageView
        android:id="@+id/img"
        android:layout_width="match_parent"
        android:layout_height="match_parent" ></ImageView>
</LinearLayout>

结果示例

Example

1 个答案:

答案 0 :(得分:0)

我通过在最终代码下方创建一个简单的自定义RecyclerView来修复了该问题

public class DJHRecyclerView extends RecyclerView {
    public DJHRecyclerView(Context context) {
        super(context);
    }

    public DJHRecyclerView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public DJHRecyclerView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        getParent().requestDisallowInterceptTouchEvent(true);
        return super.onInterceptTouchEvent(event);
    }

}