Quick tips on a Login Form in an Android App, to enhance user experience: intercept ‘Enter’ in a TextView or ‘OK’ in a Numeric-only TextView
My Login Form is with a Relative Layout. Note that the Password field is numeric-only.
<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/start_userid" android:hint="@string/start_userid" android:layout_alignParentTop="true" android:layout_marginTop="50dp" android:layout_centerHorizontal="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="numberPassword" android:ems="10" android:id="@+id/start_passwd" android:hint="@string/start_password" android:layout_below="@+id/start_userid" android:layout_centerHorizontal="true" />
The code to intercept “Enter” Key in UserId field, and “OK” in numeric-only Password field is:
mUserId = (EditText) findViewById(R.id.start_userid); mUserPassword = (EditText) findViewById(R.id.start_passwd); mUserId.setOnEditorActionListener( new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { if (actionId == EditorInfo.IME_NULL && keyEvent.getAction() == KeyEvent.ACTION_DOWN) { mUserPassword.requestFocus(); } return true; } }); mUserPassword.setOnEditorActionListener( new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { if (actionId == EditorInfo.IME_ACTION_DONE) { doLogin(); // check login & so on } return true; } });