gpt4 book ai didi

android - StateListDrawable 在 KeyboardView 的 OnDraw() 方法中不起作用

转载 作者:行者123 更新时间:2023-11-30 01:51:41 31 4
gpt4 key购买 nike

我正在尝试在运行时动态更改键盘键背景。但是可绘制状态列表在 KeyboardView 类的 onDraw 方法中不起作用。我写的代码是 -

@Override
public void onDraw(@NonNull Canvas canvas) {
List<Key> keys = getKeyboard().getKeys();
for (Key key : keys) {
StateListDrawable states = new StateListDrawable();


states.addState(new int[]{android.R.attr.state_pressed},
new ColorDrawable(Color.BLUE));
states.addState(new int[]{},
new ColorDrawable(Color.YELLOW));

states.setBounds(key.x, key.y, key.x + key.width, key.y + key.height);
states.draw(canvas);

Paint paint = new Paint();
paint.setTextAlign(Paint.Align.CENTER);
paint.setTextSize(24);
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);
}
}
}

请帮帮我。

最佳答案

我删除了 StateListDrawable 并在 onDraw 方法中使用以下条件动态更改背景。

if(key.pressed){
Drawable dr = new ColorDrawable(Color.BLUE);
dr.setBounds(key.x, key.y, key.x + key.width, key.y + key.height);
dr.draw(canvas);
}else{
Drawable dr = new ColorDrawable(Color.YELLOW);
dr.setBounds(key.x, key.y, key.x + key.width, key.y + key.height);
dr.draw(canvas);
}

关于android - StateListDrawable 在 KeyboardView 的 OnDraw() 方法中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32943996/

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