Непонятно, понимаете ли вы, как создать пользовательскую клавиатуру или нет. В случае, если вы этого не сделаете, here's - небольшой загружаемый проект, который создает пользовательскую цифровую клавиатуру. Для класса CustomKeyboardView или собственного класса клавиатуры добавьте следующий метод. Он переопределяет метод onDraw() и рисует фон ключа, определенного кодом 7 (в данном случае «0») красного цвета, а все остальные - синим.
@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);
}
}
}
В этом случае я не использовал 9-патч изображения, но только некоторые простые 50% прозрачные квадратные изображения и достигается эффект, когда существующие кнопки просто окрашено в цвета я разыскивается. Чтобы получить более индивидуальный результат, я мог бы сделать мои рисунки 9-патч-изображениями и сделать следующее. Обратите внимание, что два ключа с значками не отображаются правильно, потому что они не определены как 9-патч-изображения, и я не предпринимал никаких особых усилий, чтобы сделать их масштабируемыми для этого примера. Я также не рассматривал использование разных изображений/эффектов для различных состояний для ключей; другие показали, как это сделать.
@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);
}
}
}
Вы можете сослаться следующие ссылки 1. [ссылка 1] [1] 2. [ссылка 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 -в-переключающий цвет фона или-тема-из-ключей-динамически-я n-custom-keyboard-a – ashishmohite