我试图检测按下了哪个键,到目前为止,我能够使用dispatchKeyEvent()
方法检测到SHIFT,BACKSPACE和ENTER,但它似乎无法检测到字母和数字。而且我们还尝试了onKeyDown
和onKeyUp
,他们甚至不会检测到SHIFT,BACKSPACE和ENTER,更不用说字母和字母了。
我的目标是在EditText
中输入一个字母,然后检测KeyStroke并将其显示为Toast
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int keyaction = event.getAction();
if(keyaction == KeyEvent.ACTION_DOWN )
{
String keycode = event.getCharacters();
Toast toast = Toast.makeText(this,String.valueOf(event.getKeyCode()), Toast.LENGTH_LONG);
toast.show();
}
return super.dispatchKeyEvent(event);
}
这是检测SHIFT,BACKSPACE和ENTER的键码而不是字母
答案 0 :(得分:0)
使用类似的东西:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_D:
//do something
return true;
case KeyEvent.KEYCODE_F:
//do something
return true;
case KeyEvent.KEYCODE_d:
//do something
return true;
case KeyEvent.KEYCODE_f:
//do something
return true;
default:
return super.onKeyUp(keyCode, event);
}
}
答案 1 :(得分:0)
你要问的确切答案是: -
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK)
{
// Do Code here
}
else if(keyCode == KeyEvent.KEYCODE_0)
{
}
//And so on
return super.onKeyDown(keyCode, event); }
您可以在this page的常量部分阅读相关内容。
然而,从你问题的最后一行开始,我猜你是以错误的方式接近你的要求。你真的不需要上面的代码。相反,只需向EditText
添加文本更改后的收听者,并在文本更改时生成Toast
。类似于以下内容: -
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
String text = s.toString();
Toast.makeText(context,s.charAt(s.length()-1).toString(), Toast.LENGTH_LONG).show();
}
});
答案 2 :(得分:0)
如果你想在每个charector上显示吐司,那么你可以使用Edittext.addonTexchange listerner,在这个onTextChange方法中你可以显示你按下的文字,你可以最后输入charector并显示toast。
textView.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// here right logic for get last char and show it on toast
}
});
对于像done和Backpress这样的动作键,使用setOnKeyListener并使用不同的动作。 吨
extView.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
enterPressed();
return true;
}
return false;
}
});