对Android中的scrollTo(int x,int y)方法感到困惑

时间:2014-08-03 16:43:54

标签: android scroller

View类中有一个scrollTo(int x,int y)方法,但我不知道为什么只有当x的数量为正且negetive时,视图才向左滚动,视图向右滚动。我认为恰恰相反。 我不是母语人士,抱歉我的英语很差! 提前谢谢!!

1 个答案:

答案 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向右滚动,因为x3的当前值比预期值<{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位置移至左侧。当预期值低于当前值时,它是相同的。

这很容易解释,希望你能得到它。