Không rõ liệu bạn có hiểu cách tạo bàn phím tùy chỉnh hay không. Trong trường hợp bạn không, here's một dự án nhỏ có thể tải xuống để tạo bàn phím số tùy chỉnh. Để lớp CustomKeyboardView ở đó hoặc đến lớp bàn phím tùy chỉnh của riêng bạn, hãy thêm phương thức sau đây. Nó ghi đè lên phương thức onDraw() và vẽ nền của khóa được xác định bằng mã 7 (trong trường hợp này là "0") màu đỏ và tất cả các phím màu xanh khác.
@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)
Trong trường hợp này, tôi không sử dụng 9 miếng vá hình ảnh, nhưng chỉ khoảng 50% hình ảnh vuông trong suốt đơn giản và đạt được một hiệu ứng nơi các nút hiện có chỉ màu với các màu sắc tôi truy nã. Để có được kết quả tùy chỉnh hơn, tôi có thể tạo hình ảnh 9 miếng có thể vẽ và thực hiện các thao tác sau. Lưu ý rằng hai phím có biểu tượng không hiển thị chính xác vì chúng không được định nghĩa là hình ảnh 9 bản vá và tôi đã không thực hiện bất kỳ nỗ lực đặc biệt nào để làm cho chúng hoạt động tốt cho ví dụ này. Tôi cũng không giải quyết việc sử dụng các hình ảnh/hiệu ứng khác nhau cho các trạng thái khác nhau cho các phím; những người khác đã chỉ ra cách làm điều đó.
@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)
Bạn có thể tham khảo link sau 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-thay đổi-nền-màu-hoặc-chủ đề-của-phím-động-i n-custom-keyboard-a – ashishmohite