Es ist nicht klar, ob Sie verstehen, wie Sie eine benutzerdefinierte Tastatur erstellen oder nicht. Falls nicht, here's ein kleines herunterladbares Projekt, das eine benutzerdefinierte numerische Tastatur erstellt. Fügen Sie der CustomKeyboardView-Klasse dort oder zu Ihrer eigenen benutzerdefinierten Tastaturklasse die folgende Methode hinzu. Sie überschreibt die onDraw() -Methode und zeichnet den Hintergrund des Schlüssels, der mit Code 7 (in diesem Fall die "0") definiert ist, rot und alle anderen Schlüssel blau.
@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);
}
}
}
![tinted keys](https://i.stack.imgur.com/tbP79.png)
In diesem Fall habe ich 9-Patch-Bilder nicht, sondern nur ein paar einfachen 50% transparent quadratische Bilder und erzielen einen Effekt, bei dem die vorhandenen Tasten sind nur mit den Farben getönt I gewollt. Um ein benutzerdefinierteres Ergebnis zu erhalten, könnte ich 9-Patch-Bilder erstellen und folgende Aufgaben ausführen. Beachten Sie, dass die beiden Schlüssel mit Symbolen nicht korrekt dargestellt werden, da sie nicht als 9-Patch-Bilder definiert sind und ich keine besonderen Anstrengungen unternommen habe, um sie für dieses Beispiel gut skalieren zu lassen. Ich habe auch nicht die Verwendung verschiedener Bilder/Effekte für die verschiedenen Zustände für die Tasten angesprochen; andere haben gezeigt, wie man das macht.
@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);
}
}
}
![replaced keys](https://i.stack.imgur.com/TVrRz.png)
Sie folgenden Links verweisen 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 -zu-ändern-Hintergrund-Farbe-oder-Thema-von-Tasten-dynamisch-i n-custom-keyboard-a – ashishmohite