我对 Android 开发很陌生,我正在寻找一种在我的 Android 应用程序中包含日历的方法,但是在谷歌搜索时我发现非常糟糕。
有没有办法在我的应用程序中使用默认的日历类型的视图?(这将是理想的,因为 UI 会很熟悉)
在内置选项失败时,是否有任何带有日历控件的好的库可供我使用?
我不希望同步和所有这些(至少,在这一点上),只是希望有一个日历视图,我可以向用户显示信息。
我对 Android 开发很陌生,我正在寻找一种在我的 Android 应用程序中包含日历的方法,但是在谷歌搜索时我发现非常糟糕。
有没有办法在我的应用程序中使用默认的日历类型的视图?(这将是理想的,因为 UI 会很熟悉)
在内置选项失败时,是否有任何带有日历控件的好的库可供我使用?
我不希望同步和所有这些(至少,在这一点上),只是希望有一个日历视图,我可以向用户显示信息。
我编写了 Caldroid 库 ( https://github.com/roomorama/Caldroid ),它易于设置并且具有许多功能,例如设置最小/最大日期、禁用日期、选择日期范围、滑动更改月份、完全本地化、支持正确旋转等。自定义外观和感觉很容易。只是分享一下是否有人会觉得它有用:)
我尝试了 android-CalendarView, Caldroid ,后来切换到具有以下改进的 android-times-square :
看起来比安卓版本更干净,因为月份明显分开
就像 Caldroid 一样,它是高效应用程序的一部分。
AFAIK,除了实现自己的日历之外别无他法。所以......你需要做的是使用GridLayout
7 列并创建一个自定义BaseAdapter
以正确显示数据。
这是可能的,但并不容易。 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
将帮助您入门。但我还没有完成我的工作,我还不能把数据拿出来。但有可能
这个库看起来非常好,并且具有更现代的 UI(材料设计):
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"
/>
您可以使用我创建的 android 日历选择器,它是开源项目,您可以轻松地将其添加到您的项目中。
您可以使用 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) {
}
});
这很简单。