【发布时间】:2011-11-15 03:22:52
【问题描述】:
我现在正在工作以禁用具有滚动视图的水平滚动视图(id:ordermenu)的水平滚动(我的意思是垂直滚动视图。滚动视图的子相对布局的id:category01layout,category02layout,...)作为子项。
这是它在 XML 中的样子:
HorizontalScrollView(ordermenu)
- 线性布局
- 滚动视图
- 相对布局(category01layout)
- 滚动视图
- 相对布局(category02layout)
...
- 滚动视图
- 相对布局(category08layout)
屏幕一次显示一个类别布局,当我按下上一个/下一个按钮时,它会设置 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 变得过于僵硬和缓慢。所以请给我另一种方式。
提前致谢。
【问题讨论】:
标签: android scrollview horizontalscrollview