我有一个EditText。我希望在输入一些文本后,当用户按下软键盘的Done
键时,它应该直接执行一些我在按钮点击事件中实现的搜索操作。
答案 0 :(得分:175)
试试这个
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
//do something
}
return false;
}
});
答案 1 :(得分:20)
试试这个
适用于 DONE 和 RETURN 。
EditText editText= (EditText) findViewById(R.id.editText);
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER
|| actionId == EditorInfo.IME_ACTION_DONE) {
// Do your action
return true;
}
return false;
}
});
答案 2 :(得分:0)
您捕获KeyEvent
然后检查其密钥代码。 FLAG_EDITOR_ACTION
用于标识来自IME的输入密钥,其输入密钥已被自动标记为“下一个”或“已完成”
if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION)
//your code here
查找文档here。
第二种方法
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
int result = actionId & EditorInfo.IME_MASK_ACTION;
switch(result) {
case EditorInfo.IME_ACTION_DONE:
// done stuff
break;
case EditorInfo.IME_ACTION_NEXT:
// next stuff
break;
}
}
});
答案 3 :(得分:0)
无论键盘是显示输入符号还是下一个箭头符号
,这都将起作用YourEdittextName.setOnEditorActionListener(new TextView.OnEditorActionListener()
{
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
if(actionId== EditorInfo.IME_ACTION_DONE||actionId==EditorInfo.IME_ACTION_NEXT)
{
//Perform Action here
}
return false;
}
});
如果你面对红线,那么这样做...... 按alt + enter导入Keyevent和EditorInfo 然后所有的错误将其删除它将正确.......
答案 4 :(得分:0)
在 Kotlin 中使用
center
您也可以在“if”大括号内返回 true 以使用事件 - 这样当您按下完成时键盘不会下降