Заглавная буква с android:keyOutputText?

Я разрабатываю программную клавиатуру для конкретного языка в Android. В моем языке есть двухбуквенные символы, такие как «ch» и «ng». Я использую следующий код xml для отображения и вывода необходимых символов

<Key android:keyOutputText="ng" android:keyLabel="ng"/>

Но вывод только строчными буквами, даже если это первая буква в предложении или при использовании клавиши SHIFT. Как я могу это исправить? Требуемым выводом было бы сделать только первую букву заглавной, когда это первая буква предложения или с помощью клавиши Shift (например, Ngaiteh), но чтобы она отображалась полностью заглавной при использовании Capslock (например, NGAITEH)

Я знаю, что довольно легко использовать обычную английскую клавиатуру и просто набирать необходимые символы один за другим, но это действительно улучшит скорость набора текста для моего языка. Спасибо.


person pachuau    schedule 15.04.2014    source источник


Ответы (1)


используйте атрибут xml android:codes для ключа, а не android:keyOutputText, а затем переопределите поведение метода onKey(int primaryCode, int[] keyCodes) OnKeyboardActionListener

if (NG_KEYCODE == primaryCode) {
        if(keyboardView.isShifted()){
            getCurrentInputConnection().commitText(
                    "NG", 1);
        }else{
            getCurrentInputConnection().commitText(
                    "ng", 1);
        }
        updateShiftKeyState(getCurrentInputEditorInfo());
    }
person fedache    schedule 11.11.2014