【发布时间】:2015-03-30 17:32:51
【问题描述】:
我想更改自定义键盘中特定键的背景颜色/图像。我正在关注谷歌软键盘源代码。我想将我的密钥编辑到扩展 KeyboardView 的 LatinKeyboardView 的 onDraw 方法中。这是我的代码
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setTextAlign(Paint.Align.CENTER);
paint.setTextSize(25);
paint.setColor(Color.RED);
List<Key> keys = getKeyboard().getKeys();
for (Key key : keys) {
if (key.sticky) {
// Log.d("DEBUG",key.label.toString());
NinePatchDrawable npd = (NinePatchDrawable) context
.getResources().getDrawable(R.drawable.btn_nine);
npd.setBounds(key.x, key.y, key.x + key.width, key.y
+ key.height);
npd.draw(canvas);
if (key.icon != null) {
key.icon.setBounds(key.x, key.y, key.x + key.width, key.y + key.height);
key.icon.draw(canvas);
}
}
}
}
在这个 onDraw 方法中,我成功自定义了一个特定的键(在我的例子中是 shift 键),但是我不能为这个键添加不同的状态。我想如果我改变这个代码
NinePatchDrawable npd = (NinePatchDrawable) context
.getResources().getDrawable(R.drawable.mybutton);
让 mybutton.xml 像这样
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_nine_pressed" android:state_pressed="true"></item>
<item android:drawable="@drawable/btn_nine"></item>
</selector>
但是当我运行它时我得到了 classCastException。我认为他们可能是另一种方式。请任何知道这个技巧的人指导我。提前致谢。注意:我只想为这个自定义键添加不同的状态:)
【问题讨论】:
标签: android android-softkeyboard android-button