我目前正致力于复制Play商店应用中实现的UI模式。为了实现此类行为,我使用垂直RecyclerView
作为外部视图,并在外部垂直RecyclerView
的适配器内添加了水平RecyclerView
。
我目前面临的问题是当外部RecyclerView
滚动时,内部水平RecyclerView
无法捕捉到滚动事件,但当外部RecyclerView
不滚动时,我们可以顺利滚动水平RecyclerView
。
如果有人可以提供帮助,请留下您的评论。 Cou可以测试Play商店中的功能,即使外部RecyclerView
正在滚动,也可以启用内部水平RecyclerView
的滚动。
Play商店应用:
答案 0 :(得分:3)
此处a tutorial用于实施此类RecyclerView
。您也可以考虑查看github repository。
想法是在触摸内部RecyclerView
时禁用外部RecyclerView
的触摸检测。请参阅父RecyclerView
适配器类中的实现here。
// Disable touch detection for parent recyclerView if we use vertical nested recyclerViews
private View.OnTouchListener mTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
};
然后将触摸侦听器设置为视图。
view.findViewById(R.id.recyclerView).setOnTouchListener(mTouchListener);