目前還不清楚您是否瞭解如何創建自定義鍵盤。如果你沒有,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 -to-改變背景色或 - 主題的密鑰-動態-i的n-custom-keyboard-a – ashishmohite