我对Android开发很陌生,我正在寻找一种在我的Android应用程序中包含日历的方法,但是当谷歌搜索时我的表现非常糟糕。
有没有办法在我的应用程序中使用默认日历类型的视图? (因为用户界面很熟悉,所以会很理想)
内置选项失败,是否有可以使用日历控件的好库?
我不打算同步和所有这些(至少在这一点上),只是希望有一个我可以向用户显示信息的日历视图。
答案 0 :(得分:32)
我编写的Caldroid库(https://github.com/roomorama/Caldroid)设置简单,并具有许多功能,如设置最小/最大日期,禁用日期,选择日期范围,滑动以更改月份,完全本地化,支持正确旋转等。自定义外观很容易。只是为了分享,如果有人可能觉得它有用:)
答案 1 :(得分:9)
我尝试了android-CalendarView,Caldroid,后来改为 android-times-square ,这有以下改进:
看起来比Android版更干净,因为几个月分明了
就像Caldroid一样,它是a productive app的一部分。
答案 2 :(得分:7)
AFAIK,除了实施自己的日历之外别无他法。所以...你需要做的是使用包含7列的GridLayout
并创建自定义BaseAdapter
来正确显示数据。
答案 3 :(得分:6)
Android现在提供了三种在您的应用中合并日历的方法。
Calendar view用于挑选日期等。
Calendar provider来添加和删除操作系统日历中的事件。
Calendar intents允许您提供日历,而无需获得额外的权限或处理数据库。
答案 4 :(得分:2)
这是可能但不容易。 http://jimblackler.net/blog/?p=151&cpage=2#comment-52767
和
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
将帮助您入门。但我还没完成,但我还是无法获得数据。但它有可能
答案 5 :(得分:2)
这个库看起来非常好,并且具有更现代的UI(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"
/>
答案 6 :(得分:1)
您可以使用我创建的Android日历选择器,它是开源项目,您可以轻松地将其添加到您的项目中。
答案 7 :(得分:1)
您可以使用MFCalendarView:https://github.com/MustafaFerhan/MFCalendarView
设置多个事件;
ArrayList<String> eventDays = new ArrayList<String>();
eventDays.add("2014-02-25");
eventDays.add(Util.getCurrentDate());
mf.setEvents(eventDays);
并使用MFCalendarView的监听器处理:
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) {
}
});
这很简单。