I\'m struggling with the done button on the soft keyboard. I can\'t get the soft keyboard Done key press to hide the keyboard. From another button, it works perfectly with
Use android:imeOptions="actionDone", like that:
<EditText
...
android:imeOptions="actionDone" />
Changed the if-statement to if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)
made it working with the xml-attribute android:inputType="phone"
.
SoftKeyboard can be hide by following way
In Java class we can write following code to hide keyboard when user press done or enter
etBid.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH ||
actionId == EditorInfo.IME_ACTION_DONE ||
event != null &&
event.getAction() == KeyEvent.ACTION_DOWN &&
event.getKeyCode() == KeyEvent.KEYCODE_ENTER)
{
if (event == null || !event.isShiftPressed())
{
// the user is done typing.
InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
return true; // consume.
}
}
return false; // pass on to other listeners.
}
Use below code with android:imeOptions="actionDone"
its work for me.
<EditText
android:id="@+id/et_switch_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Name"
android:imeOptions="actionDone"
android:inputType="textPersonName" />
InputMethodManager inputManager = (InputMethodManager)
context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.toggleSoftInput(0, 0);
with context being your activity.
You should have a look at setOnEditorActionListener() for the EditText:
Set a special listener to be called when an action is performed on the text view. This will be called when the enter key is pressed, or when an action supplied to the IME is selected by the user.