android onKeyDown 捕获keycode值问题

android
功能是需要捕获用户按的数字建是1-9
但是因为输入法切换的问题 导致 1-9按键获取的值不同
有什么办法保证不管什么输入法的情况下 将keycode转为固定的值么?
我不想写好多case...

阅读 4k
1 个回答

根据keycode得到对应的字母和数字

private void checkLetterStatus(KeyEvent event) {
    int keyCode = event.getKeyCode();
    if (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT || keyCode == KeyEvent.KEYCODE_SHIFT_LEFT) {
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            //按着shift键,表示大写
            mCaps = true;
        } else {
            //松开shift键,表示小写
            mCaps = false;
        }
    }
}

//根据keycode得到对应的字母和数字
private void keyCodeToNum(int keycode) {
    if (keycode >= KeyEvent.KEYCODE_A && keycode <= KeyEvent.KEYCODE_Z) {
        if (mCaps) {
            stringBuilder.append(map.get(keycode).toUpperCase());
        } else {
            stringBuilder.append(map.get(keycode));
        }

    } else if ((keycode >= KeyEvent.KEYCODE_0 && keycode <= KeyEvent.KEYCODE_9)) {
        stringBuilder.append(keycode - KeyEvent.KEYCODE_0);
    } else {
        //暂不处理特殊符号
        Log.i("特殊字符",keycode+"");
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题