我在安卓应用中有一个EditText视图,我希望当用户输入一个字母时,应用程序能够获取该字母。这意味着需要一个监听器或事件处理程序来获取每个输入的字母。希望我的问题清楚明了。
EditText et = (EditText) findViewById(R.id.EditText01);
et.addTextChangedListener( new TextWatcher()
{
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
try
{
char currentChar = arg0.charAt(arg1); // currently typed character
}
catch(Exception e)
{
// error
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
}
});
您可以使用方法TextView.addTextChangedListener(TextWatcher watcher)
TextWatcher提供了三个很好的方法:
public abstract void afterTextChanged (Editable s)
public abstract void beforeTextChanged (CharSequence s, int start, int count, int after)
public abstract void onTextChanged (CharSequence s, int start, int before, int count)
onKeyDown()
:@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
switch (keyCode) {
case KeyEvent.KEYCODE_Q:
// Do your thing here.
break;
}
return super.onKeyDown(keyCode, event);
}
Vikas的答案对我几乎有用,但还不够。这是我为了获得实际输入的字符所做的:
EditText et = ...;
et.addTextChangedListener(new TextWatcher() {
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override public void afterTextChanged(Editable editable) { }
@Override public void onTextChanged(CharSequence s, int start, int count, int after) {
if (s.length() > start + count) {
char c = s.charAt(start + count);
// do something ...
}
}
});
(s.length() > start)
将防止在使用退格键时语句崩溃。 - eager to learn