键盘:setonkeylistener 不适用于 EditText
KeyBoard : setonkeylistener not working for EditText
我创建了一个应用程序,当用户点击 android 键盘的 ENTER 键时它会吐司一些文本,但它在我的桌面键盘上工作意味着当我点击桌面键盘的回车键时它会吐司。
那么我可以为 android 键盘的回车键做些什么呢????
这里是代码:
public class MainActivity extends AppCompatActivity implements View.OnKeyListener{
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=(EditText)findViewById(R.id.editText);
editText.setOnKeyListener(this);
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_ENTER){
Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
return true;
}
return false;
}
}
尝试使用此方法:首先使用 KeyEvent.ACTION_DOWN
过滤您的操作
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_ENTER)) {
Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
return true;
}
return false;
}
编辑
在您的 Edittext
上使用 setOnEditorActionListener
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if ( (actionId == EditorInfo.IME_ACTION_DONE) || ((event.getKeyCode() == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN ))){
Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
return true;
}
else{
return false;
}
}
});
确保在 XMl 你有:
<EditText
android:imeOptions="actionDone"
android:inputType="text"/>
onKeyListener()
适用于硬键盘而非软键盘。
有益阅读:
EditText OnKeyListener not working
Android EditText delete(backspace) key event
setOnKeyListener not responding
我创建了一个应用程序,当用户点击 android 键盘的 ENTER 键时它会吐司一些文本,但它在我的桌面键盘上工作意味着当我点击桌面键盘的回车键时它会吐司。
那么我可以为 android 键盘的回车键做些什么呢????
这里是代码:
public class MainActivity extends AppCompatActivity implements View.OnKeyListener{
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=(EditText)findViewById(R.id.editText);
editText.setOnKeyListener(this);
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_ENTER){
Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
return true;
}
return false;
}
}
尝试使用此方法:首先使用 KeyEvent.ACTION_DOWN
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_ENTER)) {
Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
return true;
}
return false;
}
编辑
在您的 Edittext
setOnEditorActionListener
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if ( (actionId == EditorInfo.IME_ACTION_DONE) || ((event.getKeyCode() == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN ))){
Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
return true;
}
else{
return false;
}
}
});
确保在 XMl 你有:
<EditText
android:imeOptions="actionDone"
android:inputType="text"/>
onKeyListener()
适用于硬键盘而非软键盘。
有益阅读:
EditText OnKeyListener not working
Android EditText delete(backspace) key event
setOnKeyListener not responding