Android定制键盘,带有2个标签(右上角的主标签和小标签)

Android定制键盘,带有2个标签(右上角的主标签和小标签),android,android-layout,keyboard,android-softkeyboard,android-keypad,Android,Android Layout,Keyboard,Android Softkeyboard,Android Keypad,我正在实现自己的自定义键盘 我用它来实现键盘 <?xml version="1.0" encoding="utf-8"?> 我想在按键上有2个标签。与下图相同(红色): 如何更改键盘xml使其具有此功能?当我们长时间点击按钮时,我们应该选择数字而不是字母您需要创建一个KeyboardView extends类并覆盖OnDraw方法,如下所示: public class MKeyboardView extends KeyboardView { @Override

我正在实现自己的自定义键盘

我用它来实现键盘

<?xml version="1.0" encoding="utf-8"?>


我想在按键上有2个标签。与下图相同(红色):


如何更改键盘xml使其具有此功能?当我们长时间点击按钮时,我们应该选择数字而不是字母

您需要创建一个KeyboardView extends类并覆盖OnDraw方法,如下所示:

public class MKeyboardView extends KeyboardView {
    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        Paint paint = new Paint();
        paint.setTextSize(15);
        paint.setColor(Color.GRAY);

        List<Key> keys = getKeyboard().getKeys();
        for(Key key: keys) {
        if(key.codes[0] == 113)
            canvas.drawText("1", key.x + (key.width/2), key.y + 25, paint);
        }
    }
}
public类MKeyboardView扩展了KeyboardView{
@凌驾
公共空白onDraw(画布){
super.onDraw(帆布);
油漆=新油漆();
油漆.尺寸(15);
油漆。设置颜色(颜色。灰色);
列表键=getKeyboard().getKeys();
用于(键:键){
if(键代码[0]==113)
canvas.drawText(“1”,key.x+(key.width/2),key.y+25,paint);
}
}
}
可以通过更改x和y参数来更改位置


享受:)

您不能强迫用户使用自定义键盘。我不明白您的意思。我想知道我怎么能有两个字母(主字母和小字母(红色))嗨@Tim我也遇到了同样的问题…你解决了这个问题吗…下面是一个很好的答案。但我在自己的布局中使用了小部件按钮。我没有很多按钮,所以对我来说没问题。嗨@Yakov,你能帮我解决这个问题吗?当我的控件到达下面的行canvas.drawText(“1”,key.x+(key.width/2),key.y+25,paint)时,我得到了NullPointerException;
public class MKeyboardView extends KeyboardView {
    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        Paint paint = new Paint();
        paint.setTextSize(15);
        paint.setColor(Color.GRAY);

        List<Key> keys = getKeyboard().getKeys();
        for(Key key: keys) {
        if(key.codes[0] == 113)
            canvas.drawText("1", key.x + (key.width/2), key.y + 25, paint);
        }
    }
}