垂直Scrollview内的水平Recyclerview

时间:2015-07-07 09:43:55

标签: android android-scrollview android-recyclerview android-cardview

我有一种情况,我有一个Recyclerview在ScrollView内水平滑动。现在情况是我在Recyclerview上进行水平滑动,而不是在Recyclerview中滚动卡片视图,它会向上滚动屏幕,这会干扰用户体验。

当此人在Recyclerview上进行水平滑动时,是否有任何避免垂直滚动的解决方案或方法?

2 个答案:

答案 0 :(得分:4)

由于scroll_conflicts发生了这个问题正如Frank所说。但我知道有时我们需要超越设计指南。顺便说一句,您可以禁止ScrollView(我将其作为RecyclerView的父级)拦截任何触摸事件。以下是此代码示例。

mRecyclerView.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    int action = event.getAction();
                    switch (action) {
                        case MotionEvent.ACTION_DOWN:
                            // Disallow ScrollView to intercept touch events.
                            v.getParent().requestDisallowInterceptTouchEvent(true);
                            break;
                        case MotionEvent.ACTION_UP:
                            //Allow ScrollView to intercept touch events once again.
                            v.getParent().requestDisallowInterceptTouchEvent(false);
                            break;
                    }
                    // Handle RecyclerView touch events.
                    v.onTouchEvent(event);
                    return true;
                }
            });

希望这可以解决您的问题。但首先检查您的LayoutManager。如果您明确使用带有HORIZONTAL布局的LinearLayoutManager,我认为不需要上面的代码。

答案 1 :(得分:1)

解决方案实际上非常简单。 将水平RecycleView作为项目放在RecycleView中,而不是使用scrollview。 然后当你滚动它时你的行为就像你想要的那样。 多数民众赞成我做了什么,它完美地运作