Asa*_*Rao 124
Dinash答案很好,但它并不适用于所有设备.下面的代码适用于所有设备
edittext.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
Din*_*ash 90
代码是
final EditText edittext = (EditText) findViewById(R.id.edittext);
edittext.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
在'edittext'中是textfield的id
查看此链接只需将setOnKeyListener设置为您的editText即可
Gib*_*olt 16
在 Kotlin 中处理 done 动作的基本方法是:
edittext.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
// Call onDone result here
true
}
false
}
Run Code Online (Sandbox Code Playgroud)
使用它来调用edittext.onDone {/*action*/}您的主代码。使其更具可读性和可维护性
edittext.onDone { submitForm() }
fun EditText.onDone(callback: () -> Unit) {
// These lines optional if you don't want to set in Xml
imeOptions = EditorInfo.IME_ACTION_DONE
maxLines = 1
setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
callback.invoke()
true
}
false
}
}
Run Code Online (Sandbox Code Playgroud)
如果不在代码中,请不要忘记将这些选项添加到您的 edittext Xml
<EditText ...
android:imeOptions="actionDone"
android:inputType="text"/>
Run Code Online (Sandbox Code Playgroud)
如果您需要
inputType="textMultiLine"支持,请阅读这篇文章
在同一琼的回答,但更换拉姆达:
etPointCombatFirst.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_DONE) {
Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show();
return true;
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
根据Asad Rao的响应,我创建了此KOTLIN扩展功能。
fun TextView.onClickKeyboardDoneButton(funExecute: () -> Unit) {
this.setOnEditorActionListener { _, actionId, _ ->
when (actionId) {
EditorInfo.IME_ACTION_DONE -> {
funExecute.invoke()
true
}
else -> false
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用:
myEditText.onClickKeyboardDoneButton{myFunctionToExecuteWhenUserClickDone()}
Run Code Online (Sandbox Code Playgroud)