0

我可以轻松地使用以下代码向左滚动视图

TouchUtils.dragViewToX(this, myView, Gravity.LEFT, -1000);

如果它不能再滚动,它甚至会在那里停留一秒钟,就像它仍在尝试一样,这是预期的行为,所以视图的内容不应该是问题。

但如果我反其道而行之,就好像它根本不存在一样。

TouchUtils.dragViewToX(this, myView, Gravity.LEFT, 1000);

无论如何,它甚至不会暂停一秒钟来模拟另一个拖动。它甚至返回所覆盖距离的正确像素值!为什么它只在提供负值时才听这个函数?为什么它不会向相反的方向拖动?这甚至不是正/负问题,如果我提供正值和不同的重力(如 RIGHT 或 END),它会向左滚动,但无论如何它都不会向右滚动。

4

1 回答 1

0
  1. 首先,dragViewToX 将尝试将您指定的视图拖动到您指定的 X 坐标。
  2. Gravity 字段指定要拖动视图的哪个部分。

因此,我建议您使用 rect 值而不是使用硬编码坐标,以便测试独立于设备规范工作。这是一个示例代码。

View view = sListView.findViewById(R.id.foo);
Rect rect = new Rect();
view.getHitRect(rect);
TouchUtils.dragViewToX(this, view, Gravity.CENTER, rect.left); // To drag left. Make sure the view is to the right of rect.left
TouchUtils.dragViewToX(this, view, Gravity.CENTER, rect.right); // To drag left. Make sure the view is to the left of rect.right

您的代码唯一有问题的是值 1000 已经超出了屏幕,因此没有可以拖动到的位置:)

于 2013-11-12T08:32:25.340 回答