我在键盘输入字符时需要查看字符。但我想从键盘获取结果。
此代码下方未使用:
{{1}}
答案 0 :(得分:0)
方法:基本思路是获得unicode角色。它是什么以及如何使用它,看看下面的链接。以下代码显示了从android.view.KeyEvent获取此unicode字符的三种可能性。尝试一下对你有用的东西。
android.view.KeyEvent event = ...you got the event
// first option
int unicode = event.getUnicodeChar();
// second option with meta-state
int unicode = event.getUnicodeChar(event.getMetaState());
// third option over the KeyCharacterMap
KeyCharacterMap map = event.getKeyCharacterMap();
int unicode = map.get(keyCode, event.getMetaState());
// once you have the unicode as integer you can do this to get the char
char unicodeChar = Character.toChars(unicode)[0];
更新: //适用于旧版本的android
检查一下以获取android.view.KeyCharacterMap:
KeyCharacterMap map = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
或者只是尝试以某种方式将这个地图放在上述类的静态方法中。
良好的编程! : - )
一些有趣的链接:
答案 1 :(得分:0)
为了在输入android.widget.EditText时获取文本,您必须使用 android.text.TextWatcher 。请尝试以下方法:
你最初的问题是要按下按键。因此,使用传递的java.lang.CharSequence并获取最后一个char:
char lastKey = s.charAt(s.length() - 1);
这应该有效。在使用此检查之前,如果不为null或者长度实际上不是0.所以之前的一些检查总是一个好主意: - )
希望这次你得到你的结果!! 好编程!
P.S。我现在在一个虚拟应用程序中尝试使用以下代码,它确实有效: - )
this.editText = (EditText) this.findViewById(R.id.edit_text);
this.editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {
if (s != null && s.length() > 0) {
final char lastKey = s.charAt(s.length()-1);
Toast.makeText(MainActivity.this, String.valueOf(lastKey),
Toast.LENGTH_SHORT).show();
}
}
@Override
public void beforeTextChanged(final CharSequence s, final int start, final int count,
final int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(final Editable s) {
// TODO Auto-generated method stub
}
});