【发布时间】:2016-09-22 06:26:39
【问题描述】:
在另一个 Recycler View 中有一个 Recycler View。两者都需要垂直滚动。外部回收器视图正确滚动,但内部回收器视图没有。
代码如下:
LinearLayoutManager mLayoutManager = new LinearLayoutManager(ViewActivity.this);
outerRecyclerView.setLayoutManager(mLayoutManager);
ViewAdapter adapter = new ViewAdapter(ViewActivity.this);
outerRecyclerView.setAdapter(adapter);
ViewAdapter如下:
public void onBindViewHolder(ViewAdapter.ViewViewHolder holder, int position)
{
//RECYCLER VIEW
//TODO: Inner Recycler view scroll movement
LinearLayoutManager mLayoutManager = new LinearLayoutManager(context);
holder.protocolRecyclerView.setLayoutManager(mLayoutManager);
ViewProtocolAdapter adapter = new ViewProtocolAdapter(context);
holder.protocolRecyclerView.setAdapter(adapter);
}
我在两个回收站视图上都尝试了以下方法,但无法解决问题
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
if(rv.getChildCount() > 0) {
View childView = rv.findChildViewUnder(e.getX(), e.getY());
if(childView ==listView) {
int action = e.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
rv.requestDisallowInterceptTouchEvent(true);
}
}
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});
也试过这个:
outerRecyclerView.setNestedScrollingEnabled(true);//Does not make any difference
innerRecyclerView.setNestedScrollingEnabled(true);//Recycler View start scrolling but very slowly and sometimes scrolls the outer one.
【问题讨论】:
-
他们都需要垂直滚动?你期待什么样的行为?
-
您可以尝试为外部回收器启用嵌套滚动并为内部禁用它吗?
-
让两个嵌套视图在同一方向滚动是一个非常糟糕的主意。为什么需要这样做?
-
@DavidArgyleThacker 实际上,我在回收站视图中有展开/折叠类型的布局。当外部回收器视图的行展开时,它有另一个列表来显示属于该特定行的列表。这就是为什么,我有两个在同一方向滚动的回收站视图。如果您有更好的想法来完成此操作,请告诉我。
-
如果您想要一个可扩展的回收站视图,那么您可以尝试:github.com/thoughtbot/expandable-recycler-view
标签: android android-recyclerview vertical-scrolling nestedrecyclerview