我正在开发Android应用程序,根据要求。我必须记录每个键,如退格,字母,特殊字符。为此,我使用的是一个宽度为0的EditText,因此它不可见。这是代码:
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/imageButton"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="14dp"
android:layout_marginStart="14dp"
android:id="@+id/editText" />
在我的JAVA课程中,我要求按下按钮时关注EditText,然后通过以下代码显示软件键盘:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
为了获得输入,我使用TextWatcher如下:
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { before = charSequence.toString();
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { Log.e("TAG","ON_CHANGE: "+charSequence);
}
@Override
public void afterTextChanged(Editable editable) {
String after = editable.toString();
if(before.length()>after.length())
{ Log.e("TAG","BACKSPACE");
}
else if(before.length()<after.length())
{ Log.e("TAG",after.charAt(after.length()-1)+"");
}
else
{ Log.e("TAG","NO CHANGE");
}
}
现在这个方法的问题如下:
是否可以以与AWT侦听器相同的方式获取软件键盘事件,例如键上/下事件。