Hide Soft keyboard on return key press

前端 未结 9 1201
[愿得一人]
[愿得一人] 2020-12-29 19:00

I\'ve searched half a dozen other answers on SO, but haven\'t found one that works. All I\'m trying to do is dismiss the soft keyboard when the user presses the enter butto

相关标签:
9条回答
  • 2020-12-29 19:26

    Try this method, It may be solve your problem.

    protected void showKeyboard() {
    
                InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
                if (activity.getCurrentFocus() == null) {
                    inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
                } else {
                    View view = activity.getCurrentFocus();
                    inputMethodManager.showSoftInput(view,InputMethodManager.SHOW_FORCED);
                }
            }
    
            /**
             * Hide keyboard.
             */
            protected void hideKeyboard() {
    
                InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
                View view = activity.getCurrentFocus();
                if (view == null) {
                    if (inputMethodManager.isAcceptingText())
                        inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_NOT_ALWAYS, 0);
                } else {
                    if (view instanceof EditText)
                        ((EditText) view).setText(((EditText) view).getText().toString()); // reset edit text bug on some keyboards bug
                    inputMethodManager.hideSoftInputFromInputMethod(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
                }          
            }
    
    0 讨论(0)
  • 2020-12-29 19:27

    Accepted answer is deprecated:

    <EditText 
       android:id="@+id/edittext_done"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:imeOptions="actionDone"
       android:singleLine="true"
    />
    

    Try with this:

    <EditText 
       android:id="@+id/edittext_done"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:imeOptions="actionDone"
       android:maxLines="1"
    />
    
    0 讨论(0)
  • 2020-12-29 19:29

    If you dont want multiple line,for you edittext you can just specify single line for the edittext and also you can put imeOptions as Done like this

    <EditText 
       android:id="@+id/edittext_done"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:imeOptions="actionDone"
       android:singleLine="true"
       />
    

    I clearly dunno whether you are trying to achieve this or not.Any way take a look.

    EDIT: android:singleLine is deprecated since API 3 due to bad performance, you have to use android:maxLines instead. singleLine will be available because even now some effects are not supported by android:maxLines attribute.

    0 讨论(0)
  • 2020-12-29 19:35

    Based on my tests, what is really required to dismiss the soft keyboard, when a user clicks the enter button, can be achieved simply by adding the code below to your EditText in xml.

    android:imeOptions="actionDone"
    android:inputType="textImeMultiLine"
    

    No need for OnEditorActionListener or any other Java code.

    0 讨论(0)
  • 2020-12-29 19:37

    This may be you could add a attribute to your EditText like this:

    android:imeOptions="actionSearch"
    
    0 讨论(0)
  • 2020-12-29 19:40

    I solved the issue by changing the following in the XML file from:

     android:inputType="textMultiLine"
    

    to:

     android:inputType="textImeMultiLine"
    
    0 讨论(0)
提交回复
热议问题