Android KeyboardView大写字母

时间:2015-01-26 11:52:09

标签: android keyboard

我在Android中制作了自定义键盘视图。我在我的应用程序中习惯了这一点,我不想使用任何其他键盘。软键盘是隐藏的。我无法从键盘上获得大写字母。您是否知道如何在我的编辑视图中获得大写字母?

BasicOnKeyboardActionListener

 @Override
public void onKey(int primaryCode, int[] keyCodes) {

    long eventTime = System.currentTimeMillis();
    KeyEvent event = new KeyEvent(eventTime, eventTime,
            KeyEvent.ACTION_DOWN, primaryCode, 0, 0, 0, 0,
            KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE);
    mTargetActivity.dispatchKeyEvent(event);

我尝试使用event.isCapsLockOn()和event.isShiftPressed()检查大写字母,但没有成功。对于大写字母我曾经使用过115个代码,但是对于键盘来说,用于转换59代码的xml代码。

我期待收到你的回复。 非常感谢

2 个答案:

答案 0 :(得分:1)

您可以使用toUpperCase函数。

您也可以参考以下链接。 Text-transform:uppercase equivalent in Android?

答案 1 :(得分:0)

在你的onKey处理程序中,你需要知道" shift"已被点击。你可以这样做:

case Keyboard.KEYCODE_SHIFT:
            shifted = !shifted;
            keyboardView.setShifted(shifted);
            keyboardView.invalidateAllKeys();
            break;

在哪里"转移"是你的听众中的一个字段。当您处理其他键的按键时,可以使用此字段,例如,您的默认onKey实现可能是:

char code = (char) primaryCode;
if (Character.isLetter(code) && shofted) {
    code = Character.toUpperCase(code);
}
commitText(String.valueOf(code), 1);

如果您的侦听器扩展了类似BaseInputConnection的内容,那么您覆盖getEditable以返回您绑定的editText,并获得方便的方法,如commitText和deleteSurroundingText。

查看http://www.fampennings.nl/maarten/android/09keyboard/index.htm以获得对此类行为的非常好的概述。