У меня есть экран входа в систему, который содержит адрес электронной почты и пароль для ввода с кнопкой отправки внизу. В соответствии с требованием, когда включена мягкая клавиатура, я перемещаю кнопку отправки вверх , т. е. показ кнопки отправки пользователю над мягкой клавиатурой и ниже моей рассылки по электронной почте/паролю, используя приведенный ниже код.Android - Мягкая клавиатура, не появляющаяся во время теста Espresso
mainrel.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
mainrel.getWindowVisibleDisplayFrame(r);
int heightDiff = mainrel.getRootView().getHeight() - (r.bottom - r.top);
if (heightDiff > 128 && heightDiff != 146) {
//KeyBoard Enabled
moveButtonTo_Top();
} else {
//KeyBoard Disabled
moveButtonTo_Down();
}
}
});
//Floating down the button
private void moveButtonTo_Down() {
RelativeLayout.LayoutParams relativeparams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
relativeparams.addRule(RelativeLayout.CENTER_HORIZONTAL);
relativeparams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
relativeparams.setMargins(0, 0, 0, Constants.NEXT_LAYOUT_MARGIN_TOP);
submitLay.setLayoutParams(relativeparams);
}
//Floating Up button
private void moveButtonTo_Top() {
RelativeLayout.LayoutParams relativeparams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
relativeparams.addRule(RelativeLayout.BELOW, R.id.mainLinearlay);
relativeparams.setMargins(0, 20, 0, 0);
relativeparams.addRule(RelativeLayout.CENTER_HORIZONTAL);
submitLay.setLayoutParams(relativeparams);
}
Каждая вещь работает отлично, пока работает моя application.But проблема во время тестирования пользовательского интерфейса эспрессо я не в состоянии увидеть softkeyboard для ввода значений в электронной EditText. Здесь я упомянул код кодов Espresso Ui.
общественный класс LoginActivityTest { @Rule public ActivityTestRule mActivityRule = new ActivityTestRule (LoginActivity.class);
@Test
public void login() {
onView(withId(R.id.ripplebtn_step)).perform(click());
Utils.sleep(3000);
//Sign In
onView(withId(R.id.edt_email)).perform(typeText(TestCaseConstants.CUSTOM_SIGNIN_USER_EMAIL)).perform(closeSoftKeyboard());
onView(withId(R.id.edt_password)).perform(typeText(TestCaseConstants.CUSTOM_SIGNIN_PASSWORD)).perform(closeSoftKeyboard());
onView(withId(R.id.txt_submit)).perform(click());
}
*** Примечание: Если я комментарий глобального макета слушателя для моего макета т.е., mainrel в моей деятельности, то я могу выполнить тестовый случай. Я думаю, что есть проблемы с движением кнопок вверх и вниз, используя OnGlobalLayoutListener.
Может ли кто-нибудь предложить или помочь мне?
public class SampleTest {
@Rule
public IntentsTestRule<StepSignInActivity> mAddIntentsTestRule =
new IntentsTestRule<StepSignInActivity>(SignInActivity.class);
IdlingResource idlingResource;
@Before
public void before() {
idlingResource = new ElapsedTimeIdlingResourc`enter code here`e(5000);
Espresso.registerIdlingResources(idlingResource);
}
@After
public void after() {
Espresso.unregisterIdlingResources(idlingResource);
}
@Test
public void runSequence() {
// this triggers our intent service, as we registered
// Espresso for it, Espresso wait for it to finish
onView(withId(R.id.edt_email)).perform(typeText(TestCaseConstants.CUSTOM_SIGNIN_USER_EMAIL));
onView(withId(R.id.edt_password)).perform(typeText(TestCaseConstants.CUSTOM_SIGNIN_PASSWORD)).perform(closeSoftKeyboard());
onView(withId(R.id.txt_submit)).perform(click());
}
Вы определили 'IntentTestRule'? –
№ Не определено. – vaish