5

我有一个用于在 Listview 上搜索的 Edittext。

我已设置imeOption为“IME_ACTION_SEARCH”,以便软键盘将在其上显示搜索键。

问题是,当我点击键盘上的搜索键时,如果 edittext 中不包含任何文本,则搜索键会更改为“完成”而不是关闭键盘。

如果 Edittext 中包含一些文本,则搜索键效果很好。

点击搜索前的键盘

点击搜索后的键盘

4

4 回答 4

1

在您的 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.
        }
    }
});
于 2013-09-19T12:49:29.387 回答
0

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.

于 2013-09-25T07:11:54.037 回答
0

you should do this to your edittext in xml

     android:imeOptions="actionSearch|actionSearch"

this will show you search button always!

于 2013-09-19T12:47:43.843 回答
0

对于我的情况,我通过 -

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"
于 2021-02-26T16:20:47.387 回答