当scrollTo
位于具有Alpha背景的EditText
后面时,我无法使LinearLayout
工作。
我想避免uiautomator,因为我认为有时候它不起作用
<RelativeLayout ...>
<ScrollView>
<LinearLayout>
<EditText />
<EditText />
<EditText />
<EditText />
....
<EditText android:id="@+id/name" />
</LinearLayout>
</ScrollView>
<LinearLayout
android:id="@+id/button_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:layout_alignParentBottom="true"
android:background="@color/white80">
</RelativeLayout>
onView(withId(R.id.name)).perform(scrollTo(), typeText(name), closeSoftKeyboard());
它说找不到ID名称。如果屏幕较大,但屏幕较小,并且edittext名称位于具有alpha backgroound的button_group后面,则该方法会正常工作。
答案 0 :(得分:1)
也许您可以在执行滚动之前使用自定义button_group
来更改ViewAction
的可见性。
首先,您需要自定义ViewAction,以执行可见性更改:
private static ViewAction setViewVisibitity(final boolean value) {
return new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return null;
}
@Override
public String getDescription() {
return "Show / Hide View";
}
@Override
public void perform(UiController uiController, View view) {
view.setVisibility(value ? View.VISIBLE : View.GONE);
}
};
}
然后:
onView(withId(R.id.button_group)).perform(setViewVisibitity(false));
onView(withId(R.id.name)).perform(scrollTo(), typeText(name), closeSoftKeyboard());
随后,您可以随时恢复button_group
的可见性:
onView(withId(R.id.button_group)).perform(setViewVisibitity(true));
尝试一下。由于button_group
的可见性设置为GONE
,因此它不应干扰滚动。