在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设置为所需的任何内容。

+0

采用这种方法,是可以选择多个日期?你会碰巧有一个片段?我对编程和Java仍然很陌生,这是我的第一个移动应用程序,而且我很难想象这个解决方案在实践中的样子。 – rainer

+0

我找到一个很好的例子(更新上面)来改变整个月份的背景颜色。我将如何去访问几个单独的日期?我找不到任何与网络相关的东西。 – rainer

+0

您可以通过调用'setUIID()'设置当天的背景,在开发人员指南中查看关于主题的部分https://www.codenameone.com/manual/theme- basics.html,我们将解释如何定义UIID。范围是你的逻辑问题,如果你有一个范围选择更新方法可以检查当前按钮是否在范围内,并适当地设置范围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; 
}