在键入android时显示字符?

时间:2015-08-06 10:48:15

标签: android

我在键盘输入字符时需要查看字符。但我想从键盘获取结果。

此代码下方未使用:

{{1}}

2 个答案:

答案 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 。请尝试以下方法:

  1. 创建一个android.text.TextWatcher实例
  2. 使用android.text.TextWatcher.onTextChanged(CharSequence s,int start,int before,int count)方法获取文本
  3. 将您创建的android.text.TextWatcher添加到android.widget.EditText.addTextchangedListener(..您的文本观察者)的android.widget.EditText中;
  4. 你最初的问题是要按下按键。因此,使用传递的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
            }
        });