Clear edittext focus and hide keyboard when button is pressed

房东的猫 提交于 2019-12-09 06:53:53

问题


I'm making an app with edittext and a button. When I enter something into edittext and then click a button, I want the keyboard and focus on edittext to disappear but I can't seem to do it.

I inserted these 2 lines of code in XML:

android:focusable="true"
android:focusableInTouchMode="true"

I also tried to add this in the button click method:

edittext.clearFocus();
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

And it just won't work, after I press the button, the keyboard remains there and edittext still has focus.


回答1:


another solution is, create a dummy layout

<!-- Dummy item for focus at startup -->
<LinearLayout
    android:id="@+id/dummy_id"
    android:orientation="vertical"
    android:layout_width="0px"
    android:layout_height="0px"
    android:focusable="true"
    android:focusableInTouchMode="true" />

and set the focus in your onButtonClickFunction

((LinearLayout) findViewById(R.id.dummy_id)).requestFocus();



回答2:


To hide the keyboard call this:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);

You can also check this solution: https://stackoverflow.com/a/15587937/786337




回答3:


InputMethodManager inputManager = (InputMethodManager)
                                  getSystemService(Context.INPUT_METHOD_SERVICE); 

inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
                                     InputMethodManager.HIDE_NOT_ALWAYS);
editText.setText("");

Add the following on your button onclick event

You need to import android.view.inputmethod.InputMethodManager;

The keyboard hides and clears the text when you click the button.



来源:https://stackoverflow.com/questions/17491674/clear-edittext-focus-and-hide-keyboard-when-button-is-pressed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!