簡體   English   中英

Android:KeyEvent.KEYCODE_X顯示為“ 8”

[英]Android: KeyEvent.KEYCODE_X being shown as '8'

我為應用程序實現了自己的自定義鍵盤,該應用程序僅將帶有文本的按鈕映射到鍵,然后將其發送到EditText。

當按下按鈕時,我最終調用此方法,傳入EditText以添加字符,並追加字符。

public void keypadPress(EditText etInput, char character) {
    etInput.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, getKeyEvent(character)));
}

getKeyEvent看起來像這樣:

public static int getKeyEvent(char c) {
    switch (c) {
    case '0':
        return KeyEvent.KEYCODE_0;
    case '1':
        return KeyEvent.KEYCODE_1;
    case '2':
        return KeyEvent.KEYCODE_2;
    case '3':
        return KeyEvent.KEYCODE_3;
    case '4':
        return KeyEvent.KEYCODE_4;
    case '5':
        return KeyEvent.KEYCODE_5;
    case '6':
        return KeyEvent.KEYCODE_6;
    case '7':
        return KeyEvent.KEYCODE_7;
    case '8':
        return KeyEvent.KEYCODE_8;
    case '9':
        return KeyEvent.KEYCODE_9;
    case '-':
        return KeyEvent.KEYCODE_MINUS;
    case '.':
        return KeyEvent.KEYCODE_PERIOD;
    case ',':
        return KeyEvent.KEYCODE_COMMA;
    case 'x':
        return KeyEvent.KEYCODE_X;
    default:
        return -1;
    }
}

EditText類型輸入設置為“數字”。 同樣,這在Android 4.0+中完全可以正常工作,但是,每當我單擊“ x”按鈕時,它將被映射到API 8上的“ 8”(也許在下面)。 我已經調試了它,它返回KeyEvent.KEYCODE_X(或52),但是EditText中顯示的是數字8。我完全一無所知,並且希望獲得任何形式的幫助。

另外,我第一次使用此小鍵盤實現打開屏幕時,每當我第一次單擊按鈕時,都會收到此警告...

10-04 01:16:29.804: W/KeyCharacterMap(8716): Can't open keycharmap file
10-04 01:16:29.804: W/KeyCharacterMap(8716): Error loading keycharmap file '/system/usr/keychars/touchscreen-keypad.kcm.bin'. hw.keyboards.0.devname='touchscreen-keypad'
10-04 01:16:29.804: W/KeyCharacterMap(8716): Using default keymap: /system/usr/keychars/qwerty.kcm.bin

然后再發出免費警告。

找到答案:

我也將digits屬性設置為“ 0123456789,.- x”,即使我嘗試將inputType更改為“ text”,也會使它將KEYCODE_X映射為'8'。 如果editText設置了inputType數字或digits屬性,則即使您手動調度事件,不是數字的鍵碼也將最終不正確。 據我所知,這僅在API 8及以下版本上發生。 在Android 4.0+上,即使inputType為“數字”,也可以允許字母。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM