Android:EditText和Button;当点击Button时,如何取消EditText的焦点并隐藏软键盘?

7
<EditText android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:layout_weight="1"
    android:id="@+id/name" android:singleLine="true"
    android:maxLength="12" android:capitalize="none" android:inputType="text" />
<Button android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:id="@+id/search_button"
    android:text="Search" />

我在我的应用程序顶部有这个。当应用程序启动时,EditText被橙色突出显示,并带有光标;当点击EditText时,软键盘弹出。用户使用它来输入到EditText中。

然而,当他们点击Button时,我的onClick方法会触发并执行所有操作,但是软键盘仍然停留在屏幕上,EditText仍然被突出显示并带有光标。

我还在Button的onclick顶部添加了以下内容:

findViewById(R.id.name).clearFocus();

尽管如此,EditText似乎没有清除其焦点。我该如何使按钮实际上像提交表单一样操作?
另外,当单击按钮时,我不会转换到不同的Activity。我想保持搜索框和按钮在屏幕顶部,因此当按下按钮时,我会动态填充并添加视图到屏幕上。
我该如何实现我的期望行为?
1个回答

13

你可以调用此方法来隐藏键盘。

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

是的,但这真的是最好的方法吗? - Ricket
1
这不是黑客行为,而是在整个Android源代码中都是这样做的。我认为旨在让用户按“完成”来关闭IME,但如果他们没有这样做或者您想手动关闭它,那么这就是在Android自己关闭它之前必须关闭IME的方法。 - Robby Pond

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接