我有一个用于在Listview上搜索的Edittext。
我已将imeOption
设置为“IME_ACTION_SEARCH”,以便软键盘会在其上显示搜索键。
问题是当我点击键盘上的搜索键时如果edittext中没有文字,搜索键会变为“完成”而不是解雇键盘。
如果Edittext中包含一些文本,则搜索键效果很好。
答案 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 */
});
<块引用>
如果你已经消费了这个动作,则返回 true,否则返回 false。
因此我们需要在此处返回 true,因为我们在此处自定义操作,它会阻止更改。另外,请确保您的 EditText
包含标志 -
android:imeOptions="actionSearch"