View类中有一个scrollTo(int x,int y)方法,但我不知道为什么只有当x的数量为正且negetive时,视图才向左滚动,视图向右滚动。我认为恰恰相反。 我不是母语人士,抱歉我的英语很差! 提前谢谢!!
答案 0 :(得分:2)
滚动的方向与x
方法的scrollTo
参数的符号无关。
这是你的x轴:
<------------------------------------------------------------->
| | | | | | | | | | | | | | |
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
scrollTo(int x, int y)
方法会将View
滚动到特定位置。
假设您x
的当前View
位置为3
。如果你这样做:
scrollTo(1, 0);
您将View
向右滚动,因为x
(3
)的当前值比预期值<{1>更大 }})。
现在,如果你这样做:
1
您可以将视图向左滚动,因为scrollTo(5, 0);
(x
)的当前值低于预期值(3
)。< / p>
为简单起见,5
方法仅的滚动方向取决于当前值和预期值之间的差异:
scrollTo
&lt; expectedValue
然后滚动到右侧currentValue
&gt; expectedValue
然后滚动到左侧但是,您所拥有的推理对于currentValue
方法是正确的。
修改强>
这是一个更详细的解释。
再说一次,您scrollBy(int x, int y)
的当前View
值为x
。这意味着屏幕的左边框(例如)与x轴上的3值匹配,可以看作如下:
3
然后您想将<------------------------------------------------------------->
| | | | | | | | | | | | | | |
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
^
|
LEFT BORDER
设置为View
轴上的7,这意味着您要将值7设置到屏幕的左边框:
x
<------------------------------------------------------------->
| | | | | | | | | | | | | | |
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
^ ^
| |
LEFT BORDER EXPECTED
无法移动,因为它是屏幕的左边框。因此,唯一的解决方案是将LEFT BORDER
位置移至左侧。当预期值低于当前值时,它是相同的。
这很容易解释,希望你能得到它。