我根据教程here创建了一个水平的pagedScrollPane。每个页面都包含具有正常垂直ScrollPane的表格。
如果初始拖动是垂直的,我需要垂直滚动,如果拖动是水平的,我需要在页面之间滚动。我意识到我必须使用两个scrollPane myScroll.setCancelTouchFocus(false);
才能激活垂直scrollPane。然后,如果我想要一个scrollPane来禁用,我决定将setCancelTouchFocus设置为true。
scrollVert.addListener(new DragListener() {
@Override
public void drag(InputEvent event, float x, float y, int pointer) {
if (!scrolling) {
float dX = Math.abs(getDeltaX());
float dY = Math.abs(getDeltaY());
if (dX != 0 || dY != 0) {
if (dX > dY) {
scrollPages.setCancelTouchFocus(true);
} else {
scrollVert.setCancelTouchFocus(true);
}
scrolling = true;
}
}
super.drag(event, x, y, pointer);
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
scrolling = false;
scrollPages.setCancelTouchFocus(false);
scrollVert.setCancelTouchFocus(false);
super.touchUp(event, x, y, pointer, button);
}
});
问题在于,如果我沿对角线(或快速向右和向下)拖动,则scrollPane会稍微向侧面跳跃,然后才会决定滚动的位置。