我想更改自定义键盘中特定键的背景颜色/图像。我正在使用谷歌软键盘源代码。我想将我的密钥编辑到LatinKeyboardView的onDraw方法中,该方法扩展了KeyboardView。这是我的代码
@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。我认为他们可能是另一种方式。请任何知道这个技巧的人指导我。提前致谢。 N.B:我只想在这个自定义密钥中添加不同的状态:)
答案 0 :(得分:0)
你的drawable不是9补丁,所以你不能把它作为一个补丁。将其用作标准Drawable。
答案 1 :(得分:0)
将android:state_pressed
放在android:drawable
。