【问题标题】:Android KeyboardView capital lettersAndroid KeyboardView 大写字母
【发布时间】:2015-01-26 11:52:08
【问题描述】:

我在 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 代码,但对于键盘的 xml 中的 shift 59 代码。

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

【问题讨论】:

    标签: android keyboard


    【解决方案1】:

    您可以为此使用 toUpperCase 函数。

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

    【讨论】:

    • 你是对的,但我想有机会在键盘视图中改变大小写字母和非大写字母。
    【解决方案2】:

    在您的 onKey 处理程序中,您需要知道是否单击了“shift”。你可以这样做:

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

    "shifted" 是您侦听器中的一个字段。当您处理其他键的按键时可以使用此字段,例如您的默认 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 以获得对此类行为的非常好的概述。

    【讨论】:

      猜你喜欢
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多