我想创建一个嵌套的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>
结果示例
答案 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);
}
}