我对Android开发还比较新,正在寻找一种在我的Android应用程序中包含日历的方法,在谷歌上搜索时遇到了很多问题。
有没有办法在我的应用程序中使用默认的日历视图?(理想情况下,因为用户界面会更加熟悉)
如果没有内置选项,是否有任何好的库具有可以使用的日历控件?
我不想要同步等功能(至少目前不需要),只是想要一个可以向用户显示信息的日历视图。
我对Android开发还比较新,正在寻找一种在我的Android应用程序中包含日历的方法,在谷歌上搜索时遇到了很多问题。
有没有办法在我的应用程序中使用默认的日历视图?(理想情况下,因为用户界面会更加熟悉)
如果没有内置选项,是否有任何好的库具有可以使用的日历控件?
我不想要同步等功能(至少目前不需要),只是想要一个可以向用户显示信息的日历视图。
我写了Caldroid库 (https://github.com/roomorama/Caldroid),它易于设置并具有许多功能,例如设置最小/最大日期、禁用日期、选择日期范围、滑动以更改月份、完全本地化、支持正确旋转等。它易于自定义外观和感觉。只是分享一下,如果有人可能会发现它有用 :)
看起来比Android版本更清洁,因为月份明确分开
GridLayout
并创建自定义BaseAdapter
以正确显示数据。private void InsertAppointment(String strTitle, String strDescription, String strEventLocation, long StartDateTime, long EndDateTime, boolean bAllDay, boolean bHasAlarm){
int tAllday;
int tHasAlarm;
if (bAllDay = true){
tAllday = 1;
}
else
tAllday = 0;
if (bHasAlarm = true){
tHasAlarm = 1;
}
else
tHasAlarm = 0;
ContentValues event = new ContentValues();
// Calendar in which you want to add Evenet
event.put("calendar_id", CalId); //CalId
event.put("title", strTitle);
event.put("description", strDescription);
event.put("eventLocation", strEventLocation);
event.put("dtstart", StartDateTime);
event.put("dtend", EndDateTime );
event.put("allDay", 0);
event.put("hasAlarm", 0);
Uri eventsUri = Uri.parse("content://com.android.calendar/events");
// event is added
getContentResolver().insert(eventsUri, event);
}
content://com.android.calendar/calendars
将帮助您入门。但我还没有完成我的工作,我还无法获取数据。不过这是可能的。这个库看起来非常不错,界面也更现代化(Material Design):
https://github.com/prolificinteractive/material-calendarview
你只需要通过gradle导入它:
compile 'com.prolificinteractive:material-calendarview:1.4.0'
然后将其添加到您的布局中:
<com.prolificinteractive.materialcalendarview.MaterialCalendarView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:mcv_showOtherDates="all"
app:mcv_selectionColor="#00F"
/>
ArrayList<String> eventDays = new ArrayList<String>();
eventDays.add("2014-02-25");
eventDays.add(Util.getCurrentDate());
mf.setEvents(eventDays);
mf = (MFCalendarView) findViewById(R.id.mFCalendarView);
mf.setOnCalendarViewListener(new onMFCalendarViewListener() {
@Override
public void onDisplayedMonthChanged(int month, int year, String monthStr) {
}
@Override
public void onDateChanged(String date) {
}
});
这非常简单。