6

我正在制作一个带有edittext和一个按钮的应用程序。当我在edittext中输入内容然后单击一个按钮时,我希望键盘并专注于edittext消失,但我似乎无法做到。

我在 XML 中插入了这两行代码:

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

我还尝试在按钮单击方法中添加它:

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

而且它不起作用,在我按下按钮后,键盘仍然存在并且edittext仍然具有焦点。

4

4 回答 4

17

要隐藏键盘,请调用:

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

您还可以查看此解决方案: https ://stackoverflow.com/a/15587937/786337

于 2013-07-05T14:54:38.420 回答
13

另一种解决方案是,创建一个虚拟布局

<!-- 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" />

并将重点放在您的onButtonClickFunction

((LinearLayout) findViewById(R.id.dummy_id)).requestFocus();
于 2013-07-05T15:04:16.327 回答
1
InputMethodManager inputManager = (InputMethodManager)
                                  getSystemService(Context.INPUT_METHOD_SERVICE); 

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

在您的按钮 onclick 事件中添加以下内容

你需要import android.view.inputmethod.InputMethodManager

单击按钮时,键盘会隐藏和清除文本。

于 2013-07-05T15:03:18.247 回答
1

首先,您必须禁用键盘:

void hideKeyboard(Activity activity) { View view = activity.getCurrentFocus(); InputMethodManager manager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); assert manager != null && view != null; manager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); }

第二个清晰的视图(布局,EditText ...)焦点:

view.clearFocus

于 2020-05-28T09:58:54.463 回答