gpt4 book ai didi

android - viewpager 内的 horizo​​ntalscrollview

转载 作者:行者123 更新时间:2023-11-29 00:16:38 24 4
gpt4 key购买 nike

我有一个包含 2 到 4 个页面的 viewpager。这些页面之一以表格形式显示数据。为此,我使用了垂直滚动和水平滚动。

由于 horizo​​ntalscrollview 和 viewpager 之间的冲突,有时滚动没有任何作用。

我想在页面向左滚动时滚动页面。当它到达边缘时,另一个滑动手势将使其改变 View 寻呼机的页面,遵循 http://developer.android.com/design/patterns/swipe-views.html 的指南。它指出:“如果 View 包含超过屏幕宽度的内容,例如宽电子邮件,请确保用户的初始滑动将在 View 内水平滚动。一旦到达内容的末尾,应再次滑动导航到下一个 View 。此外,当内容水平滚动时,支持使用边缘滑动在 View 之间立即导航。”

我怎样才能做到这一点?

最佳答案

最后我做了一个自定义寻呼机并像这样重写了方法 canScroll

@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
if (v instanceof HorizontalScrollView) {
HorizontalScrollView scroll = (HorizontalScrollView) v;

int vScrollX = scroll.getScrollX();
TableLayout table = (TableLayout) scroll.getChildAt(scroll
.getChildCount() - 1);
int diff = (table.getRight() - (scroll.getWidth()
+ scroll.getScrollX() + table.getLeft()));

if (vScrollX == 0 && diff <= 0) {// table without scroll
if (dx > 20 && this.getCurrentItem() > 0) {
this.setCurrentItem(this.getCurrentItem() - 1, true);
} else if (dx < -20
&& this.getCurrentItem() + 1 < this.getChildCount()) {
this.setCurrentItem(this.getCurrentItem() + 1, true);
}
return false; // change page
}
if (vScrollX == 0 && dx > 20) {// left edge, swiping right
if (this.getCurrentItem() > 0) {
this.setCurrentItem(this.getCurrentItem() - 1, true);
}
return false; // change page
}
if (vScrollX == 0 && dx < -20) {// left edge, swiping left
return true;// scroll
}
if (diff <= 0 && dx > 20) {// right edge, swiping right
return true;// scroll
}
if (diff <= 0 && dx < -20) {// right edge, swiping left
if (this.getCurrentItem() + 1 < this.getChildCount()) {
this.setCurrentItem(this.getCurrentItem() + 1, true);
}
return false;// change page
}
}
return super.canScroll(v, checkV, dx, x, y);
}

关于android - viewpager 内的 horizo​​ntalscrollview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26234989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com