【问题标题】:Customize the appearance of a <Key>自定义 <Key> 的外观
【发布时间】:2011-08-25 10:12:57
【问题描述】:

一些第 3 方键盘的每个键都有多个字符,例如 Better Keyboard 8 在每个键的字母上方都有数字和标点符号:

这可以用&lt;Key&gt; 标签来完成吗?如果是这样,我无法弄清楚如何。如果有人知道怎么做,我将不胜感激。

提前致谢, 巴里

【问题讨论】:

    标签: android android-layout android-widget


    【解决方案1】:

    我想通了,所以我正在回答我自己的问题。

    不能在 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);
            }
        }
    }
    

    【讨论】:

    • 这是完美的,谢谢!如何使辅助字符出现在关键文本下方而不是上方?
    • 只需调整 drawText() 中的第三个值。它控制 y 位置。 key.y 是键的底部相对于键盘底部。
    • 嗨@BarryFruitman 我的要求和上面的键盘一样,所以我使用了你在回答帖子中给你的代码。但是当我在 View 类的 onDraw() 覆盖方法中调用 drawText() 方法时,我得到了 NullPointerException。
    • 嗨@BarryFruitman,如上所示,我已经使用onDraw() 成功显示了字符,但是当我使用paint 创建键时出现问题...我使用了drawRect() ....但没有任何帮助...所以你能告诉我如何使用上面显示的油漆创建密钥...
    • 抱歉 Aniket 我无法在这里回答您的问题。我建议您使用代码示例发布另一个问题。祝你好运。
    猜你喜欢
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多