gpt4 book ai didi

android - 如何在android中为自定义键盘的特定键添加不同的状态

转载 作者:太空狗 更新时间:2023-10-29 14:59:29 24 4
gpt4 key购买 nike

我想更改自定义键盘中特定键的背景颜色/图像。我正在关注谷歌软键盘源代码。我想将我的键编辑到扩展 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。我认为他们可能是另一种方式。请任何知道这个技巧的人指导我。提前致谢。 N.B:我只想为这个自定义键添加不同的状态:)

最佳答案

您的可绘制对象不是 9 补丁,因此您不能将其作为一个进行转换。将其用作标准 Drawable。

关于android - 如何在android中为自定义键盘的特定键添加不同的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28249483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com