我有一个用于在 Listview 上搜索的 Edittext。
我已设置imeOption
为“IME_ACTION_SEARCH”,以便软键盘将在其上显示搜索键。
问题是,当我点击键盘上的搜索键时,如果 edittext 中不包含任何文本,则搜索键会更改为“完成”而不是关闭键盘。
如果 Edittext 中包含一些文本,则搜索键效果很好。
我有一个用于在 Listview 上搜索的 Edittext。
我已设置imeOption
为“IME_ACTION_SEARCH”,以便软键盘将在其上显示搜索键。
问题是,当我点击键盘上的搜索键时,如果 edittext 中不包含任何文本,则搜索键会更改为“完成”而不是关闭键盘。
如果 Edittext 中包含一些文本,则搜索键效果很好。
在您的 XML 布局文件中,您可以设置
<EditText android:imeOptions="actionSearch" />
或者在你的 Java 源文件中你可以做
yourTextField.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
然后您可以覆盖搜索事件的侦听器。
yourTextField.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
//if textfield value is empty then close keyboard.
//else call your search function.
}
}
});
I found the problem behind this. It was happening because the OnEditorAction
Listener was not properly set on Edittext. Since listener was not properly set call was not reaching onEditorAction()
method.
you should do this to your edittext in xml
android:imeOptions="actionSearch|actionSearch"
this will show you search button always!
对于我的情况,我通过 -
myEditText.setOnEditorActionListener((v, actionId, event) -> {
/* First check that if the edit text is empty or not */
if (!TextUtils.isEmpty(myEditText.getText().toString()) && actionId == EditorInfo.IME_ACTION_SEARCH) {
/* Do your task here */
}
return true; /* Must return true because here we customize the action */
});
根据这个官方文档,
如果您已经消费了该操作,则返回 true,否则返回 false。
所以我们需要在这里返回true,因为我们在这里自定义了动作,它会阻止改变。此外,请确保您EditText
包含标志 -
android:imeOptions="actionSearch"