TouchUtils.dragViewToX只会向一个方向滚动

时间:2013-09-08 03:58:57

标签: android android-testing

我可以使用以下代码轻松地使用

向左滚动视图
TouchUtils.dragViewToX(this, myView, Gravity.LEFT, -1000);

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

但是,如果我做相反的事情,它就好像它甚至不存在一样。

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

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

1 个答案:

答案 0 :(得分:0)

  1. 首先,dragViewToX会尝试将您指定的视图拖动到您指定的X坐标。
  2. “重力”字段指定要拖动视图的哪个部分。
  3. 所以我建议您使用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已经不在屏幕之外,因此没有可以拖到的位置:)