ScrollView布局实际上是一个垂直滚动条。
为什么滚动视图方法只采用x参数而只是垂直滚动?
不应该只带y参数吗?因为x参数没用。
有什么想法吗?
答案 0 :(得分:2)
代码来自ScrollView.class
ScrollView
需要致电View
的{{1}},因此需要2个参数
因此,任何scrollTo(x, y)
的子类(包括View
)都可以按x轴和y轴滚动。
ScrollView
那么为什么@Override
public void scrollTo(int x, int y) {
// we rely on the fact the View.scrollBy calls scrollTo.
if (getChildCount() > 0) {
View child = getChildAt(0);
x = clamp(x, getWidth() - mPaddingRight - mPaddingLeft, child.getWidth());
y = clamp(y, getHeight() - mPaddingBottom - mPaddingTop, child.getHeight());
if (x != mScrollX || y != mScrollY) {
super.scrollTo(x, y);
}
}
}
只能在垂直方向滚动?
查看ScrollView
中的public boolean onTouchEvent(MotionEvent ev)
方法
它只处理ScrollView
!
另一方面,ev.getY()
仅处理HorizonalScrollView
。
答案 1 :(得分:1)
为什么滚动视图方法在仅滚动时采用x参数 垂直?
仅当您的布局文件与视图宽度相同时才会出现这种情况。看看this thread.
您也可以使用HorizontalScrollView
进行水平滚动,您需要x参数。请检查the developer site。
或者,如果需要,您可以使用this blog中显示的这个二维滚动条来使用这两个参数。