7

在此处输入图像描述

在 Android 4.0 默认日历中,如果我们想移至下个月,则需要滚动日历,但我需要通过按上图中存在的箭头移至下个月或上个月。我还想添加到默认日历。如果添加事件,则该日期应像图像中一样标记。

我使用了这个日历视图。

<CalendarView
    android:id="@+id/calendarView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" />

我想知道如何务实地使用向这个 CalendarView 添加事件。

4

1 回答 1

7

移至下个月或上个月,您可以使用以下代码:

    mButtonNext = (Button) findViewById(R.id.buttonNext);
    mButtonNext.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Calendar cal = new GregorianCalendar();
            cal.setTimeInMillis(mCalendarView.getDate() );
            cal.add(Calendar.MONTH, 1);
            mCalendarView.setDate(cal.getTimeInMillis(), true, true);
        }
    });

    mButtonPrevious = (Button) findViewById(R.id.buttonPrevious);
    mButtonPrevious.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Calendar cal = new GregorianCalendar();
            cal.setTimeInMillis(mCalendarView.getDate() );
            cal.add(Calendar.MONTH, -1);                
            mCalendarView.setDate(cal.getTimeInMillis(), true, true);
        }
    });

如果您想在默认日历中添加事件,您必须查看发布的链接 @adam2510。这是您可以使用的示例代码:

public void addEvent() {   
    ContentResolver cr = mContext.getContentResolver();
    ContentValues eventValues = new ContentValues();
    eventValues.put(Events.TITLE, "title");
    eventValues.put(Events.EVENT_LOCATION, "location");
    eventValues.put(Events.DTSTART, startTimeMilliseconds);
    eventValues.put(Events.DTEND, endTimeMilliseconds);
    eventValues.put(Events.CALENDAR_ID, "1");//Defaul calendar
    eventValues.put(Events.EVENT_TIMEZONE, TimeZone.SHORT);
    cr.insert(Events.CONTENT_URI, eventValues);
}

CalendarView不适用于事件。在 Android 文档中,您可以阅读以下内容CalendarView

“此类是用于显示和选择日期的日历小部件”。

我找不到更改单元格属性的简单方法。
如果您想在自己的日历中添加事件,最好实现自己的日历,您可以在其中更改所有视图的属性。您可以在 google.com 中找到大量日历实现

于 2012-10-12T10:32:00.530 回答