我有这个按钮来切换主题:
public void onButtonThemeActionEvent(com.codename1.ui.events.ActionEvent ev) {
if(index == 0) {
index++;
UIManager.initNamedTheme("/theme", "Leather");
Display.getInstance().getCurrent().refreshTheme();
}
else if(index == 1) {
index++;
UIManager.initNamedTheme("/theme", "Chrome");
Display.getInstance().getCurrent().refreshTheme();
}
else if(index == 2) {
index++;
UIManager.initNamedTheme("/theme", "FlatOrange");
Display.getInstance().getCurrent().refreshTheme();
}
else if(index == 3) {
index++;
UIManager.initNamedTheme("/theme", "FlatBlue");
Display.getInstance().getCurrent().refreshTheme();
}
else if(index == 4) {
index++;
UIManager.initNamedTheme("/theme", "FlatRed");
Display.getInstance().getCurrent().refreshTheme();
}
else if(index == 5) {
index = 0;
UIManager.initNamedTheme("/theme", "Business");
Display.getInstance().getCurrent().refreshTheme();
}
}
此代码会更改序列中的主题,如您所见,从皮革更改为Chrome时会出现问题,然后如下图所示,表单标题中缺少一个字母“Tela Princip a “应该是”Tela Princip al “而不是。
OBS:这是Android设备。
导航完任何菜单并退回Tela Principal后,修复如下图所示:
如何修复此Chrome主题错误?
答案 0 :(得分:2)
切换主题后需要添加revalidate()
,以便UI更新为新的字体大小/填充/边距等。
如果这不起作用,请尝试forceRevalidate()
,这是您通常不应该做的,但有时是必要的。