自定义<Key>的外观

10

有些第三方键盘在每个按键上有多个字符,例如Better Keyboard 8在每个键上的字母上面有数字和标点:

Better Keyboard屏幕截图

使用<Key>标签可以实现这一点吗?如果可以,我无法弄清楚如何做到。如果有人知道,请告诉我。

提前致谢, Barry

1个回答

28

我自己解决了问题,现在回答一下我的问题。

无法在XML中完成,但可以通过覆盖KeyboardView的onDraw()方法在Java中完成。以下是一个毫无意义的示例,在父类绘制按键后,在每个按键的顶部绘制一个小写字母:

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

这太完美了,谢谢!你怎么让次要字符出现在键文本下面而不是上面? - IgorGanapolsky
嗨@BarryFruitman,我的需求与上面的键盘相同,所以我使用了您在答案帖子中提供的代码。但是当我在View类的onDraw()重写方法中调用drawText()方法时,我遇到了NullPointerException。 - Aniket
嗨@BarryFruitman,我已经成功地使用onDraw()显示了字符,就像你上面展示的那样,但是当我使用paint创建键时出现了问题...我使用了drawRect()...但是没有帮助我...所以你能告诉我如何使用paint创建键吗?就像你上面展示的那样... - Aniket
抱歉,Aniket,我不能在这里回答你的问题。我建议你发一篇带有代码示例的新问题。祝你好运。 - Barry Fruitman
@BarryFruitman:我的需求不同,但这段代码对我帮助很大。 - V_J
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接