2017-07-15 113 views
1

我想在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); 

} 

回答

0

我假設你正在使用的com.codename1.ui.Calendar類。自定義的竅門是派生類並覆蓋updateButtonDayDate方法,您可以在該方法中將特定選定日期的UIID設置爲所需的任何內容。

+0

採用這種方法,是可以選擇多個日期?你會碰巧有一個片段?我對編程和Java仍然很陌生,這是我的第一個移動應用程序,而且我很難想象這個解決方案在實踐中的樣子。 – rainer

+0

我找到一個很好的例子(更新上面)來改變整個月份的背景顏色。我將如何去訪問幾個單獨的日期?我找不到任何與網絡相關的東西。 – rainer

+0

您可以通過調用'setUIID()'設置當天的背景,在開發人員指南中查看關於主題的部分https://www.codenameone.com/manual/theme- basics.html,我們將解釋如何定義UIID。範圍是你的邏輯問題,如果你有一個範圍選擇更新方法可以檢查當前按鈕是否在範圍內,並適當地設置範圍UIID。這不是一件簡單的事情,我沒有一個關於 –

0

我發現了以下解決方案:

爲了根據列表項選擇或在一個代號日曆顯示多個日期,一個選擇是在日期列表,並格式化日期按鈕:

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; 
} 
相關問題