【问题标题】:Android: EditText and Button; when click Button, unfocus EditText and hide soft keyboard?Android:EditText 和 Button;单击按钮时,取消聚焦 EditText 并隐藏软键盘?
【发布时间】:2011-03-07 19:34:49
【问题描述】:
<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。

但是,当他们单击按钮时,我的 onClick 方法会触发并执行应做的所有操作,但是软键盘仍停留在屏幕上,并且 EditText 仍以其光标突出显示。

我也有,在按钮的顶部点击:

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

尽管如此,EditText 似乎并没有清除它的焦点。如何使按钮实际上就像在提交表单一样?

此外,我不会在单击按钮时转换到不同的 Activity。我想这是典型的情况,可能是他们不费心隐藏键盘的原因。但是我想将搜索框和按钮保留在屏幕顶部,所以我只是在按下按钮时动态填充并向屏幕添加视图。

如何实现我想要的行为?

【问题讨论】:

    标签: android


    【解决方案1】:

    你可以通过调用这个来隐藏键盘。

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

    【讨论】:

    • 是的,但这真的是最好的方法吗?
    • 这不是 hack,它是在整个 Android 源代码中完成的。我假设它旨在让用户按完成来关闭 IME,但如果他们不按或如果您想手动关闭它,那么这就是您必须在 Android 自行关闭 IME 之前关闭 IME 的方式。
    猜你喜欢
    • 2013-07-03
    • 2013-01-12
    • 1970-01-01
    • 2017-01-13
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    相关资源
    最近更新 更多