当 EditText
位于具有 alpha 背景的 LinearLayout
后面时,我无法使 scrollTo
工作。
我想避免使用 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名称。如果屏幕很大,它工作正常,但如果它很小,并且编辑文本名称位于具有 alpha 背景的 button_group 后面,它总是会失败。
最佳答案
也许您可以在执行滚动之前使用自定义 ViewAction
更改 button_group
可见性。
首先,您需要执行可见性更改的自定义 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
,因此它不应干扰滚动。
关于android - scrollTo 在带有 alpha 的 View 后面时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56071694/