2017-03-01 76 views
0

我有以下看法:咖啡製作比賽畫面誰不是當前顯示

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_margin="@dimen/default_spacing"> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/view_monthly_resume_accounts" 
      android:layout_width="match_parent" 
      android:layout_height="100dp"/> 

     <!-- a lot of content --> 

     <TableLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="48dp"> 

      <TableRow> 
       <TextView 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="@string/total_receipts" 
        android:textColor="@color/color_primary_text"/> 
       <TextView 
        android:id="@+id/view_monthly_resume_total_receipts" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textColor="@color/value_unreceived" 
        android:gravity="end"/> 
      </TableRow> 
      <!-- more content --> 
     </TableLayout> 

    </LinearLayout> 
</ScrollView> 

這種觀點是ViewPager內。我想驗證視圖的內容,其ID爲view_monthly_resume_total_receipts。由於視圖是一個ViewPager裏面我做了以下內容:

onView(allOf(
      withId(R.id.view_monthly_resume_balance), 
      isDisplayed())) 
      .check(matches(withText(expectedBalance))); 

我有很多的內容,也不能保證正在顯示視圖,它可以在當前視圖顯示在ViewPager但屏幕外。

我嘗試添加ID到TableLayout,LinearLayout或ScrollView,並使用withParent,並檢查是否父顯示,但不成功。

我試過使用hasSiblings並查找R.id.view_monthly_resume_accounts,我知道肯定會顯示,因爲它是第一個視圖,但也沒有奏效。

所以,我的問題是:如何使咖啡找到一個ViewPager中的視圖內的視圖,但該視圖是離屏的?

回答

0

經過一番研究,我發現方法isDescendantOfA。

withParent方法只適用於最近的viewGroup。 isDescendantOfA查找所有樹。

從問題的例子,我可以添加一個ID爲的LinearLayout靠近滾動型和更新比賽進行到以下幾點:

onView(allOf(
     withId(R.id.view_monthly_resume_balance), 
     allOf(
      isDescendantOfA(withId(<linear layout id>)), 
      isDisplayed())) 
     .check(matches(withText(expectedBalance)));