Horizo​​ntalScrollView

Horizo​​ntalScrollView

这就是我的HorizontalScrollView的样子:

<HorizontalScrollView
    android:layout_below="@id/saved_circuits_title"
    android:id="@+id/saved_circuits_scrollview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <LinearLayout
        android:id="@+id/saved_circuits_scroll"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="horizontal">
    </LinearLayout>
</HorizontalScrollView>

在我的HomeActivity中,我有以下相关代码用位图填充HorizontalScrollView
onCreate{
...
this.savedCircuitsScroll = (LinearLayout) findViewById(R.id.saved_circuits_scroll);
...
}

updateSavedCircuits(){
...// code to make an ImageView from a retrieved bitmap
newImageImage.setOnClickListener(this.thumbnailListener);
this.savedCircuitsScroll.addView(newImageImage);
...
}

如何使用Espresso滚动到水平滚动视图中指定索引处的ImageView并单击它?
我试过的
我的布局xml中没有id,因此this这样的方法不起作用:
onView( withId( R.id.button)).perform( scrollTo(), click());

我知道你可以找到一种类似的方法来解决:
    onView(withId(R.id.saved_circuits_scroll))
            .perform(HorizontalScrollViewActions.actionOnItemAtPosition(0, click()));

除了HorizontalScrollViews以外不存在。
或者在click on an item by index in a RecyclerView之后,我尝试了以下操作,以至少单击指定索引处HorizontalScrollViewActions中的某个项:
// Click item at position 3
onView(withHorizontalScrollView(R.id.scroll_view).atPosition(3)).perform(click());
// Convenience helper
public static HorizontalScrollViewMatcher withHorizontalScrollView(final int horizontalScrollViewId) {
    return new HorizontalScrollViewMatcher(horizontalScrollId);
}

除了HorizontalScrollView以外不存在。
我们该为HorizontalScrollViewMatcher做些什么?它不是HorizontalScrollView的后代,因此答案this blog建议我需要实现自己的自定义ScrollView。我所要做的就是按索引滚动到ViewAction中的项目并单击它。真的需要这个吗?如果这是我需要做的,我应该如何实现这个定制HorizontalScrollView

最佳答案

在我的案例中,我是通过使用:

onView(allOf(withId(R.id.itemTextView), withEffectiveVisibility(Visibility.VISIBLE), withText(R.string.categories))).perform(scrollTo(), click())

R.id.itemTextView是动态添加到
<HorizontalScrollView>
  <LinearLayout>
      ... [child added dynamically]
  </LinearLayout>
</HorizontalScrollView>

关于android - Espresso:如何按索引滚动到Horizo​​ntalScrollView中的项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40903900/

10-10 04:35