我在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代码。
我期待收到你的回复。 非常感谢
答案 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以获得对此类行为的非常好的概述。