点击它后,ImeAction搜索更改为完成

时间:2013-09-19 12:40:19

标签: android android-softkeyboard

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

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

问题是当我点击键盘上的搜索键时如果edittext中没有文字,搜索键会变为“完成”而不是解雇键盘。

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

Keyboard before tapping on Search

Keyboard after tapping Search

4 个答案:

答案 0 :(得分: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.
        }
    }
});

答案 1 :(得分:0)

你应该在xml

中对你的edittext这样做
     android:imeOptions="actionSearch|actionSearch"

这将始终显示搜索按钮!

答案 2 :(得分:0)

我发现了这背后的问题。之所以发生这种情况,是因为OnEditorAction侦听器未在Edittext上正确设置。由于未正确设置侦听器,因此调用未达到onEditorAction()方法。

答案 3 :(得分: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 */
        });

根据此official documentation

<块引用>

如果你已经消费了这个动作,则返回 true,否则返回 false。

因此我们需要在此处返回 true,因为我们在此处自定义操作,它会阻止更改。另外,请确保您的 EditText 包含标志 -

android:imeOptions="actionSearch"