Home » Android » android – Customize the appearance of a <Key>

android – Customize the appearance of a <Key>

Posted by: admin May 14, 2020 Leave a comment


Some 3rd party keyboards have more than one character on each key, for example Better Keyboard 8 has numbers and punctuation above the letters on each key:

Better Keyboard screen shot

Can this be done with the <Key> tag? If so I cannot figure out how. I would appreciate if anybody knows how.

Thanks in advance,

How to&Answers:

I figured it out so I am answering my own question.

It cannot be done in XML, but it can be done in Java by overriding the onDraw() method of KeyboardView. This pointless example draws a small letter at the top of each key after the keys are drawn by the parent class:

public class MyKeyboardView extends KeyboardView {
    public void onDraw(Canvas canvas) {

        Paint paint = new Paint();

        List<Key> keys = getKeyboard().getKeys();
        for(Key key: keys) {
            if(key.label != null)
                canvas.drawText(key.label.toString(), key.x + (key.width/2), key.y + 25, paint);