2011-05-14 59 views
10

一些第三方鍵盤有每個鍵有多個字符的外觀,例如更好的鍵盤8具有上述每個鍵上的字母數字和標點符號:自定義的<Key>

Better Keyboard screen shot

可這是用<Key>標籤完成?如果是這樣,我不知道如何。如果有人知道如何,我將不勝感激。

由於提前, 巴里

回答

23

我想通了,所以我回答我的問題。

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

這是完美的,謝謝!你如何讓次要字符出現在關鍵文本下面而不是上面? – 2012-05-18 19:32:02

+0

只需調整drawText()中的第三個值即可。它控制y位置。 key.y是鍵盤底部相對於鍵盤底部的底部。 – 2012-05-20 16:45:55

+0

您好@BarryFruitman我的要求與上面的鍵盤相同,所以我在回答帖子中使用了給定的代碼。但是當我在View類的onDraw()重寫方法中調用drawText()方法時,我得到NullPointerException。 – Aniket 2013-10-19 12:49:30