2011-05-14 9 views
10

Algunos teclados de 3 ª parte tienen más de un carácter en cada tecla, por ejemplo, una mejor teclado 8 tiene números y puntuacion por encima de las letras en cada tecla:personalizar la apariencia de un <Key>

Better Keyboard screen shot

Puede ser esto hecho con la etiqueta <Key>? Si es así, no puedo entender cómo. Apreciaría si alguien sabe cómo.

Gracias de antemano, Barry

Respuesta

23

lo he descubierto lo que estoy respondiendo a mi propia pregunta.

No se puede hacer en XML, pero se puede hacer en Java anulando el método onDraw() de KeyboardView. Este ejemplo sin sentido dibuja una pequeña letra en la parte superior de cada tecla después de que las claves son dibujadas por la clase principal:

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

Esto es perfecto, gracias! ¿Cómo se hace que los caracteres secundarios aparezcan debajo del texto clave en lugar de arriba? –

+0

Simplemente modifica el tercer valor en drawText(). Controla la posición y. key.y es la parte inferior de la tecla relativa a la parte inferior del teclado. –

+0

Hola @BarryFruitman mi requisito es el mismo que el que se muestra en el teclado anterior, así que utilicé el código que se te dio en tu respuesta. Pero obtengo NullPointerException cuando estoy llamando al método drawText() en el método anulado onDraw() de la clase View. – Aniket

Cuestiones relacionadas