#background-color #codenameone
#цвет фона #codenameone
Вопрос:
У меня проблема с настройкой цвета фона текстового поля:
private TextField mValueField;
public void setFgColor(int color) {
mValueField.getAllStyles().setBgTransparency(0xFF);
if (color == Controller.WHITE_COLOR) {
mValueField.getAllStyles().setBgColor(0xFFFFFF);
} else if (color == Controller.RED_COLOR) {
mValueField.getAllStyles().setBgColor(0xFF0000);
}
}
Первый вызов устанавливает белый цвет, последующие вызовы устанавливают белый или красный цвет, но фон текстового поля остается белым все время. Если я изменю цвет первого вызова на красный, то цвет фона текстового поля станет красным, но также никогда не изменится, если позже установить значение white.
Ответ №1:
После изменения цвета bg вы должны немедленно вызвать mValueField.getComponentForm().repaint();
или mValueField.getParent().repaint();
Комментарии:
1. Я бы также добавил, что, поскольку текстовое поле имеет границу, цветной фон не будет иметь значения. Так
mValueField.getAllStyles().setBorder(null)
бы установить цвет, но это, вероятно, не «правильный путь»… Я бы предложил использоватьsetUIID("TextFieldInvalid")
и стилизовать это. Похоже, это то, что он пытается сделать