StateListDrawable не работает в методе OnDraw() KeyboardView
Я пытаюсь динамически изменить фон клавиатуры во время выполнения. Но рисование списка состояний не работает в методе onDraw класса KeyboardView. Мой письменный код -
@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);
}
}
}
Пожалуйста, помогите мне.
1 ответ
Я удалил 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);
}