两个ExpandableListView中滚动的同步
Synchronisation of the scroll in the two ExpandableListView
我有两个 ExpandableListView
,它们彼此靠近。是否可以在两者中同步滚动?让我们说如果用户开始滚动在第一个 ExpandableListView
开始滚动也在第二个 ExpandableListView
开始滚动?
比如前三列(第二行)是第一个ExpandableListView,最后一个是第二个ExpandableListView。 (见图)
这是一个有趣的问题。我发明了这个概念证明 github gist
此解决方案依赖于 View.OnTouchListener,我们通过 将 MotionEvent 从第一个可扩展视图传递到另一个可扩展视图dispatchTouchEvent 方法,反之亦然。
这是示例用法:
ExpandableListViewSynchronisationTouchListener expandableListViewSynchronisationTouchListener = new ExpandableListViewSynchronisationTouchListener(this, firstExpandable, secondExpandable);
firstExpandable.setOnTouchListener(expandableListViewSynchronisationTouchListener);
secondExpandable.setOnTouchListener(expandableListViewSynchronisationTouchListener);
firstExpandable.setOnChildClickListener(expandableListViewSynchronisationTouchListener);
secondExpandable.setOnChildClickListener(expandableListViewSynchronisationTouchListener);
我有两个 ExpandableListView
,它们彼此靠近。是否可以在两者中同步滚动?让我们说如果用户开始滚动在第一个 ExpandableListView
开始滚动也在第二个 ExpandableListView
开始滚动?
比如前三列(第二行)是第一个ExpandableListView,最后一个是第二个ExpandableListView。 (见图)
这是一个有趣的问题。我发明了这个概念证明 github gist
此解决方案依赖于 View.OnTouchListener,我们通过 将 MotionEvent 从第一个可扩展视图传递到另一个可扩展视图dispatchTouchEvent 方法,反之亦然。
这是示例用法:
ExpandableListViewSynchronisationTouchListener expandableListViewSynchronisationTouchListener = new ExpandableListViewSynchronisationTouchListener(this, firstExpandable, secondExpandable);
firstExpandable.setOnTouchListener(expandableListViewSynchronisationTouchListener);
secondExpandable.setOnTouchListener(expandableListViewSynchronisationTouchListener);
firstExpandable.setOnChildClickListener(expandableListViewSynchronisationTouchListener);
secondExpandable.setOnChildClickListener(expandableListViewSynchronisationTouchListener);