2013-04-08 69 views
12

我已經在日曆中獲得了日曆視圖,現在我試圖更改單日的外觀以突出顯示日期。 我沒有找到任何有用的方法here,只有整個weekdates或monthdates出現的變化。 那麼有沒有可能突出一天?在日曆視圖中更改單日的顏色android

另外我知道有像3個職位相同的問題,但沒有人得到答案。

+0

嘗試此http://計算器.com/questions/9412402/change-calendarview-style – 2013-04-08 08:30:53

+0

如果我解釋這個權利,他也會改變所有日期的外觀,所以這對我來說不是一個解決方案,如果我理解錯了,請糾正我。 – Werdli 2013-04-08 08:38:29

回答

9

您可以擴展本地CalenderView以創建您自己的CustomCalendarView並在外觀上進行任何所需的更改。

您可以找到本機CalendarView here的代碼。

+6

謝謝,不知道本機的CalendarView。 仍然android應該也許應該實現一個方法來更改CalendarView中的單日顏色! – Werdli 2013-04-08 09:14:55

+0

我發現日曆視圖非常容易混淆。我不明白爲什麼用戶想要垂直或水平滾動,就好像您正在閱讀長文本文檔一樣。我覺得這根本不符合人體工程學。我正在尋找如何防止滾動日曆和每個視圖只顯示一個月的方法。 – 2015-04-09 14:16:41

+0

CalendarView源鏈接已死亡。 – 2015-08-20 22:57:34

4

你可以做到這一點通過獲得CalendarView子視圖,然後在那裏configuations:

final CalendarView calendar = new CalendarView(this);  
    java.lang.reflect.Field field = null; 

    Class<?> cvClass = calendar.getClass(); 
    try { 
     field = cvClass.getDeclaredField("mDayNamesHeader");  
     field.setAccessible(true); 
    } catch (NoSuchFieldException e) { 
    } 

    ViewGroup tv = null; 
    try { 
     tv = (ViewGroup) field.get(calendar); 
    } catch (IllegalAccessException e) {} 
     catch (IllegalArgumentException){} 

    TextView k = (TextView) tv.getChildAt(1); 
    k.setTextColor(Color.RED); 

在這裏你可以找到所有聲明:

https://android.googlesource.com/platform/frameworks/base/+/2888524e03896831f487e5dee63f18f1c33c0115/core/java/android/widget/CalendarView.java