Android 自定义a<;键>;

Android 自定义a<;键>;,android,android-layout,android-widget,Android,Android Layout,Android Widget,某些第三方键盘的每个键上都有一个以上的字符,例如,更好的键盘8在每个键上的字母上方都有数字和标点符号: 这可以用标记完成吗?如果是这样的话,我想不出怎么做。如果有人知道怎么做,我将不胜感激 提前感谢,, 巴里我想出来了,所以我在回答我自己的问题 它不能在XML中完成,但可以通过重写KeyboardView的onDraw()方法在Java中完成。此无意义的示例在父类绘制键后,在每个键的顶部绘制一个小字母: public class MyKeyboardView extends KeyboardV

某些第三方键盘的每个键上都有一个以上的字符,例如,更好的键盘8在每个键上的字母上方都有数字和标点符号:

这可以用
标记完成吗?如果是这样的话,我想不出怎么做。如果有人知道怎么做,我将不胜感激

提前感谢,,
巴里

我想出来了,所以我在回答我自己的问题

它不能在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);
        }
    }
}
公共类MyKeyboardView扩展了KeyboardView{
@凌驾
公共空白onDraw(画布){
super.onDraw(帆布);
油漆=新油漆();
paint.setTextAlign(paint.Align.CENTER);
油漆.尺寸(25);
油漆。设置颜色(颜色。红色);
列表键=getKeyboard().getKeys();
用于(键:键){
如果(key.label!=null)
drawText(key.label.toString(),key.x+(key.width/2),key.y+25,paint);
}
}
}

这太完美了,谢谢!如何使次要字符显示在关键字文本下方而不是上方?只需调整drawText()中的第三个值。它控制y位置。键.y是相对于键盘底部的键的底部。嗨@BarryFruitman我的要求与上面的键盘所示相同,所以我使用了你在回答帖子中给出的代码。但当我在视图类的onDraw()重写方法中调用drawText()方法时,我得到了NullPointerException。您好@BarryFruitman,我已经成功地使用onDraw()显示了字符,如上所示,但当我使用paint创建键时出现了问题…我使用了drawRect()…但是什么都帮不了我…所以你能告诉我如何使用上面所示的油漆创建钥匙吗…对不起,Aniket,我不能在这里回答你的问题。我建议您发布另一个带有代码示例的问题。祝你好运