1

我有一个日期列表,我想在 calendarview 上用红色着色。我能怎么做 ?

我的活动..

public class Calendario extends Activity {

    RelativeLayout rl;
    final Calendar calendar = Calendar.getInstance();
    CalendarView cal;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calendar);

        rl = (RelativeLayout) findViewById(R.id.rl);
        cal = new CalendarView(Calendario.this);

        rl.addView(cal);
        cal.setOnDateChangeListener(new OnDateChangeListener() {

        @Override
        public void onSelectedDayChange(CalendarView view, int year, int month,
                int dayOfMonth) {
            // TODO Auto-generated method stub

        }
    });
    }


}

我必须添加什么代码才能为日期着色?

4

3 回答 3

1

您最好的选择可能是根据此处找到的源代码创建您自己的 CalendarView 类,即 CalendarViewCustom 。

然后,您可以向 LegacyCalendarViewDelegate 类添加一个类似于 setFocusedMonthDateColor() 方法的额外方法,以遍历周并在 WeekView 类中设置日期和颜色(可能值得将这些键/值日期/颜色存储为 Map 集合实例WeekView 类中的变量)。例如

public void setMonthDateColor(Date date, int color) {                
    final int childCount = mListView.getChildCount();
    for (int i = 0; i < childCount; i++) {
        WeekView weekView = (WeekView) mListView.getChildAt(i);
        if (weekView.isDateInWeek(date)) {
            //this method adds the date and colour to a 
            //Map collection in weekView Object 
            weekView.setDateColour(date, color);
        }
    }
}

然后需要通过向父类 CalendarViewCustom 添加另一个方法(类似于其现有方法)来公开上述方法,然后可以在该类的实例上调用该方法,即

public int setMonthDateColor(Date date, int color) {
    return mDelegate.getMonthDateColor(date, color);
}

然后,您需要做的就是使用现有的 for 循环( for (; i < nDays; i++) )在名为 drawWeekNumbersAndDates() 的 WeekView 类方法中为指定日期在画布上绘制列出的颜色,然后遍历 Map 并更改日期文本的油漆颜色,即 mMonthNumDrawPaint.setColor()。

希望这能为您指明正确的方向。

于 2014-11-20T09:59:56.453 回答
1

尝试这个。希望这可以帮助

android:weekDayTextAppearance="@style/CalendarWeekDateText"


<style name="CalendarWeekDatText" parent="TextAppearance.AppCompat.Button">
    <item name="android:textColor">#000000</item>
</style>
于 2016-08-30T05:05:17.200 回答
0
android:theme="@style/testTheme"

使用此主题或具有父主题的自定义主题。

让它变白

要选择白色以外的颜色,请使用以下颜色

android:textColorPrimary="@color/yourColor"

对于其他文本颜色,请使用以下

android:weekDayTextAppearance="@style/weekDayTextAppearance"
    android:dateTextAppearance="@style/appTextAppearance"
    android:unfocusedMonthDateColor="@color/colorLoginBtn"
    android:selectedWeekBackgroundColor="@color/colorLoginBtn"
    android:weekSeparatorLineColor="@color/colorLoginBtn"
    android:focusedMonthDateColor="@color/colorLoginBtn"
    android:weekNumberColor="@color/colorLoginBtn"
于 2016-06-22T05:00:48.030 回答