Non è chiaro se si capisca come creare una tastiera personalizzata o meno. Nel caso in cui non lo fai, here's un piccolo progetto scaricabile che crea una tastiera numerica personalizzata. Alla classe CustomKeyboardView lì o alla tua classe di tastiera personalizzata, aggiungi il seguente metodo. Sostituisce il metodo onDraw() e disegna lo sfondo della chiave definita con il codice 7 (in questo caso lo "0") rosso e tutti gli altri tasti blu.
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
List<Key> keys = getKeyboard().getKeys();
for (Key key : keys) {
if (key.codes[0] == 7) {
Log.e("KEY", "Drawing key with code " + key.codes[0]);
Drawable dr = (Drawable) context.getResources().getDrawable(R.drawable.red_tint);
dr.setBounds(key.x, key.y, key.x + key.width, key.y + key.height);
dr.draw(canvas);
} else {
Drawable dr = (Drawable) context.getResources().getDrawable(R.drawable.blue_tint);
dr.setBounds(key.x, key.y, key.x + key.width, key.y + key.height);
dr.draw(canvas);
}
}
}

In questo caso, non ho usato immagini 9-patch, ma solo alcune semplici 50% immagini quadrati trasparenti e raggiunto un effetto per cui i pulsanti esistenti sono semplicemente tinti con i colori che ricercato. Per ottenere un risultato più personalizzato, potrei creare le mie immagini drawable a 9 patch e procedere come segue. Nota che i due tasti con le icone non vengono visualizzati correttamente perché non sono definiti come immagini con 9 patch e non ho fatto alcuno sforzo particolare per farli scalare bene per questo esempio. Inoltre non ho affrontato l'uso di immagini/effetti diversi per i vari stati per le chiavi; altri hanno mostrato come farlo.
@Override
public void onDraw(Canvas canvas) {
// super.onDraw(canvas);
List<Key> keys = getKeyboard().getKeys();
for (Key key : keys) {
if (key.codes[0] == 7) {
NinePatchDrawable npd
= (NinePatchDrawable) context.getResources().getDrawable(R.drawable.red_key);
npd.setBounds(key.x, key.y, key.x + key.width, key.y + key.height);
npd.draw(canvas);
} else {
NinePatchDrawable npd
= (NinePatchDrawable) context.getResources().getDrawable(R.drawable.blue_key);
npd.setBounds(key.x, key.y, key.x + key.width, key.y + key.height);
npd.draw(canvas);
}
Paint paint = new Paint();
paint.setTextAlign(Paint.Align.CENTER);
paint.setTextSize(48);
paint.setColor(Color.GRAY);
if (key.label != null) {
canvas.drawText(key.label.toString(), key.x + (key.width/2),
key.y + (key.height/2), paint);
} else {
key.icon.setBounds(key.x, key.y, key.x + key.width, key.y + key.height);
key.icon.draw(canvas);
}
}
}

È possibile fare riferimento seguendo i link 1. [link 1] [1] 2. [link 2] [2] [1]: http: //stackoverflow.com/questions/15789997/how-to-change-background-color-of-key-for-android-soft-keyboard [2]: http://stackoverflow.com/questions/18180136/how -to-cambio-background-color-o-theme-of-chiavi-dinamico-i n-custom-keyboard-a – ashishmohite