【问题标题】:Android custom keyboard with 2 lablels (main and small at the top right)带有 2 个标签的 Android 自定义键盘(右上角的主键盘和小键盘)
【发布时间】:2013-09-15 07:35:13
【问题描述】:

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

我使用this tutorial 来实现键盘

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

 <Row>
    <Key android:keyLabel="q" android:keyEdgeFlags="left"/>
    <Key android:keyLabel="w"/>
    <Key android:keyLabel="e"/>
    <Key android:keyLabel="r"/>
    <Key android:keyLabel="t"/>
    <Key android:keyLabel="y"/>
    <Key android:keyLabel="u"/>
    <Key android:keyLabel="i"/>
    <Key android:keyLabel="o"/>
    <Key android:keyLabel="p" android:keyEdgeFlags="right"/>
</Row>

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

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

【问题讨论】:

  • 您不能强制用户使用自定义键盘。
  • 我不明白你的意思。我想知道我怎样才能有 2 个字母(主要和小(红色))
  • 嗨@Tim 我也遇到了同样的问题……你解决了这个问题吗……
  • 下面有一个很好的答案。但我在自己的布局中使用了小部件按钮。我没有很多按钮,所以对我来说没问题。

标签: android android-layout keyboard android-softkeyboard android-keypad


【解决方案1】:

您需要创建一个 KeyboardView 扩展类并像这样覆盖 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);
        }
    }
}

您可以通过更改 x 和 y 参数来更改位置。

享受:)

【讨论】:

  • 嗨@Yakov你能帮我解决这个问题吗,当我的控件到达下一行时,我得到 NullPointerException,canvas.drawText("1", key.x + (key.width/2 ), key.y + 25, 油漆);
猜你喜欢
  • 2011-02-17
  • 2017-05-17
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 2013-01-18
  • 2016-09-27
  • 1970-01-01
  • 2012-09-12
相关资源
最近更新 更多