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

Questions:

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,
Barry

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 {
    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        Paint paint = new Paint();
        paint.setTextAlign(Paint.Align.CENTER);
        paint.setTextSize(25);
        paint.setColor(Color.RED);

        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);
        }
    }
}