在CodenameOne中设置日历单元格的背景颜色
问题描述:
我想在CodenameOne日历中一次性更改几天的背景颜色。在CodenameOne中设置日历单元格的背景颜色
这可能吗?有人可能有代码示例吗?
我想象一下从列表或散列表中获取日期(如:01-08-2017,05-08-2017,20-08-2017),并在日历中为这些日子设置不同的背景颜色。
这是我到目前为止有:
@Override
protected void updateButtonDayDate(Button dayButton, int currentMonth, int day) {
//Customize day values
dayButton.setText("" + day);
Style s = dayButton.getAllStyles();
s.setPaddingTop(3);
s.setPaddingBottom(3);
s.setBgColor(ColorUtil.BLUE);
s.setBgTransparency(255);
//s.setBorder(null);
}
答
我假设你正在使用的com.codename1.ui.Calendar
类。自定义的窍门是派生类并覆盖updateButtonDayDate
方法,您可以在该方法中将特定选定日期的UIID设置为所需的任何内容。
答
我发现了以下解决方案:
为了根据列表项选择或在一个代号日历显示多个日期,一个选择是在日期列表,并格式化日期按钮:
cal = new Calendar() {
@Override
protected void updateButtonDayDate(Button dayButton, int currentYear, int currentMonth, int day ) {
list.add(1);
list.add(12);
list.add(13);
list.add(14);
list.add(21);
for (int day_Number : list) {
if (day_Number == day) {
dayButton.setText("" + day);
dayButton.setUIID("mycalender-day");
}
}
};
CSS文件中包含的格式类型:
mycalender-day {
border: 1px solid whitesmoke;
color:orange;
font-family: "native:MainRegular";
font-size: 7pt;
}
采用这种方法,是可以选择多个日期?你会碰巧有一个片段?我对编程和Java仍然很陌生,这是我的第一个移动应用程序,而且我很难想象这个解决方案在实践中的样子。 – rainer
我找到一个很好的例子(更新上面)来改变整个月份的背景颜色。我将如何去访问几个单独的日期?我找不到任何与网络相关的东西。 – rainer
您可以通过调用'setUIID()'设置当天的背景,在开发人员指南中查看关于主题的部分https://www.codenameone.com/manual/theme- basics.html,我们将解释如何定义UIID。范围是你的逻辑问题,如果你有一个范围选择更新方法可以检查当前按钮是否在范围内,并适当地设置范围UIID。这不是一件简单的事情,我没有一个关于 –