我现在正在工作以禁用具有滚动视图的水平滚动视图(id:ordermenu)的水平滚动(我的意思是垂直滚动视图。滚动视图的子相对布局的id:category01layout,category02layout,...)作为孩子。
这是它在 XML 中的样子:
HorizontalScrollView(ordermenu)
- LinearLayout
- ScrollView
- RelativeLayout(category01layout)
- ScrollView
- RelativeLayout(category02layout)
...
- ScrollView
- RelativeLayout(category08layout)
屏幕一次显示一个类别布局,当我按下 prev/next 按钮时,它会设置 Horizontalscrollview.smoothScrollTo() 来更改类别布局。
因此,当我运行应用程序并滚动时,我的手指同时滚动 HorizontalScrollView 和 ScrollView。但我不希望我的手指让这两个都听 onScrollChanged。我只希望 ScrollView 听我的手指“只垂直滚动”。因为我不知道如何做到这一点,所以 ScrollView 仅当我沿确切的垂直方向滚动时才会以平滑的方式垂直滚动。否则我的手指也会滚动 HorizontalScrollView,这是我没想到的。
那么有没有办法禁用水平滚动而只启用垂直滚动呢?
我以前使用过这个方法(创建一个扩展 HorizontalScrollView 的类)
@Override
protected void onScrollChanged(int x, int y, intoldx, intoldy){
if(Math.abs(x - oldx) <= 50){
mScrollable = false;
}
else {
mScrollable = false;
}
return;
}
但这只是给 UI 带来了很大的负担,使垂直滚动的 ScrollView 变得过于僵硬和缓慢。所以请给我另一种方式。
提前致谢。