在RecyclerView

时间:2016-02-14 20:13:27

标签: android android-espresso

我有一个带有ItemTouchHelper的RecyclerView来刷内部项目LEFT和RIGHT - 当我通过espresso执行swipeLeft()和swipeRight()时,这样:

onView(withId(R.id.pass_recyclerview)).perform(RecyclerViewActions.actionOnItemAtPosition(0,swipeRight()));

但不幸的是,测试是不稳定的 - 在某些设备上工作,而在某些设备上却没有 - 是否有可靠的方法来执行此滑动操作?我已经玩过其他EDGE_FUZZ_FACTOR了 - 但这也不是让它100%工作的方法

更新: 我调试了一下这个问题 - 不知何故,在某些设备上,中间有一个取消事件:

event_t1 = {android.view.MotionEvent@830019549128}“MotionEvent {action = ACTION_DOWN,id [0] = 0,x [0] = 546.0,y [0] = 40.0,toolType [0] = TOOL_TYPE_UNKNOWN,buttonState = 0,metaState = 0,flags = 0x0,edgeFlags = 0x0,pointerCount = 1,historySize = 0,eventTime = 788701990,downTime = 788701990,deviceId = 0,source = 0x1002}“

event_t2 = {android.view.MotionEvent@830019178264}“MotionEvent {action = ACTION_CANCEL,id [0] = 0,x [0] = 500.98276,y [0] = 40.0,toolType [0] = TOOL_TYPE_UNKNOWN,buttonState = 0,metaState = 0,flags = 0x0,edgeFlags = 0x0,pointerCount = 1,historySize = 1,eventTime = 788722868,downTime = 788701990,deviceId = 0,source = 0x1002}“

我在ItemTouchHelper的“public boolean onInterceptTouchEvent(RecyclerView recyclerView,MotionEvent event)”中看到了这一点。 这是我在那里看到的唯一事件 - 有趣的是,当激活屏幕叠加显示触摸数据时,我看到刷卡完成后取消了~1 / 10的方式

1 个答案:

答案 0 :(得分:0)

问题可能是默认的swipeLeft / Right实现使用了按压式FINGER(这意味着16x16 mm)。您可以尝试创建自己的滑动实现described here