【发布时间】:2021-09-08 19:32:52
【问题描述】:
我有一个没有 ~~scrolling~~ 和 nestedScrollingEnabled=false 的嵌套回收器列表。我正在尝试向上滑动并通过其文本单击回收站项目。在确定何时滑动以及滑动多远时遇到问题。
更新:这可能有滚动,我可能需要用文本指定项目的 ViewHolder 而不是用文本的视图...正在试验...
- parent_recycler_list
- recycler_list
- 列表项 A
- 列表项 B
- recycler_list
- 列表项 A
- 列表项 B
- recycler_list
到目前为止,我能够找到该项目并尝试点击它:
Espresso.onView(
CoreMatchers.allOf(
ViewMatchers.withId(R.id.recycler_list),
ViewMatchers.hasDescendant(recyclerViewItemWithText(text))
)
).perform(
RecyclerViewActions.actionOnItem<RecyclerView.ViewHolder>(
recyclerViewItemWithText(text),
ViewActions.click()
)
)
fun recyclerViewItemWithText(text: String) = object : BoundedMatcher<View, View>(View::class.java) {
override fun describeTo(description: Description?) {
description?.appendText("Searching for text with: $text")
}
override fun matchesSafely(item: View?): Boolean {
val views = ArrayList<View>()
item?.findViewsWithText(views, text, View.FIND_VIEWS_WITH_TEXT)
return when (views.size) {
1 -> true
else -> false
}
}
}
这仅在显示列表项时自行起作用。 我尝试滑动直到显示视图项:
Espresso.onView(ViewMatchers.withId(R.id.parent_recycler_list)).perform(
ViewActions.repeatedlyUntil(
ViewActions.swipeUp(),
Matchers.allOf(
ViewMatchers.hasDescendant(ViewMatchers.withText(text)),
isCompletelyDisplayed()
), 10
)
)
这将始终至少滑动一次...并且可以滑过我正在寻找的视图项。
有没有一种方法可以让我更精确地确定滑动的时间和距离?
我还是个新手,对视图持有者的自定义滑动操作了解不多。谢谢
尝试使用nestedScrollTo()时
java.lang.RuntimeException:将不会执行操作,因为 目标视图与以下一项或多项约束不匹配: (视图具有有效的可见性=VISIBLE 并且是 a 的后代:(是 可从类分配:类 androidx.core.widget.NestedScrollView))
【问题讨论】:
标签: android-recyclerview android-espresso