我有一个带有 EditText
的 Activity
,一个按钮和一个 ListView
. 目的是在 EditText
中键入搜索屏幕,按下按钮并使搜索结果填充此列表 .
这一切都很完美,但虚拟键盘表现得很奇怪 .
如果我单击 EditText
,我会得到虚拟键盘 . 如果我单击虚拟键盘上的"Done"按钮,它就会消失 . 但是,如果在单击虚拟键盘上的"Done"之前单击我的搜索按钮,则虚拟键盘会停留,我无法摆脱它 . 单击"Done"按钮不会关闭键盘 . 它将"Done"按钮从"Done"更改为箭头并保持可见 .
谢谢你的帮助
14 回答
我把它放在
onClick(View v)
事件之后 .你需要导入
android.view.inputmethod.InputMethodManager
;单击按钮时键盘会隐藏 .
Use Below Code
您应该为EditView实现
OnEditorActionListener
你隐藏键盘:
您还应该使用
onClickListener
在按钮中触发键盘隐藏现在单击虚拟键盘上的“完成”按钮将执行相同操作 - 隐藏键盘并执行单击操作 .
在按钮单击事件中添加以下代码:
由于您只有一个编辑文本,因此只需在按钮单击内调用该编辑文本的操作,其余部分由系统处理 . 如果您有多个edittext,那么这将不会那么高效,因为您必须首先获得有针对性的edittext . 但在你的情况下,它将完美地工作
对于活动,
对于片段,请使用 getActivity()
. getActivity()getSystemService();
. getActivity()getCurrentFocus();
这个解决方案对我来说很完美:
试试这个...
您可以在按钮单击事件中使用此代码
Crash Null Point异常修复:我遇到了一个用户点击按钮时键盘可能无法打开的情况 . 您必须编写if语句来检查getCurrentFocus()不是null:
科特林的例子:
来自片段:
来自活动:
如果设置
android:singleLine="true"
,按钮会自动隐藏键盘