我有一种情况,我有一个Recyclerview在ScrollView内水平滑动。现在情况是我在Recyclerview上进行水平滑动,而不是在Recyclerview中滚动卡片视图,它会向上滚动屏幕,这会干扰用户体验。
当此人在Recyclerview上进行水平滑动时,是否有任何避免垂直滚动的解决方案或方法?
答案 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。 然后当你滚动它时你的行为就像你想要的那样。 多数民众赞成我做了什么,它完美地运作