Просмотр календаря Android
Я новичок в разработке Android, и я ищу способ включения календаря в приложение для Android, но я очень плохо себя чувствую при работе с Google.
-
Есть ли способ использовать вид календаря по умолчанию в моем приложении? (было бы идеальным, так как пользовательский интерфейс был бы знаком)
-
Невозможно выполнить встроенную опцию, есть ли там хорошие библиотеки с календарным элементом управления, который я мог бы использовать?
Я не хочу синхронизировать и все это (по крайней мере, на данный момент), просто глядя на представление календаря, чтобы я мог отображать информацию пользователю.
Ответы
Ответ 1
Я написал библиотеку Caldroid (https://github.com/roomorama/Caldroid), которая проста в настройке и имеет множество функций, таких как минимальная/минимальная дата, отключенные даты, выбирать диапазон дат, прокручивать, чтобы изменить месяц, полностью локализовать, правильно поддерживать вращение и т.д. Легко настроить внешний вид. Просто чтобы поделиться, если кто-то может найти это полезным:)
Ответ 2
Я попробовал android-CalendarView, Caldroid и позже переключился на android-times-square, который имеет такие улучшения:
Как и Caldroid, он является частью продуктивного приложения.
Ответ 3
AFAIK, нет другого способа, кроме как реализовать свой собственный календарь. Итак... что вам нужно сделать, это использовать GridLayout
с 7 столбцами и создать пользовательский BaseAdapter
для правильного отображения данных.
Ответ 4
Android теперь предоставляет три способа включения календарей в ваше приложение.
-
Просмотр календаря для выбора даты и тому подобное.
-
Доступ к провайдеру календаря позволяет добавлять и удалять события из календаря ОС.
-
Календарные намерения позволяют вам предоставлять календарь без необходимости получения дополнительных разрешений или работы с базами данных.
Ответ 5
это возможно, но не легко. 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
поможет вам начать работу. но я еще не закончил свою, пока просто не могу получить данные. но это возможно
Ответ 6
Эта библиотека кажется действительно приятной и с более современным интерфейсом (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"
/>
![введите описание изображения здесь]()
Ответ 7
Вы можете использовать сборщик календарей android, который я создал, это проект с открытым исходным кодом, и вы можете легко добавить его в свой проект.
https://github.com/sancarbar/Android-Calendar-Picker
Ответ 8
Вы можете использовать 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) {
}
});
Это очень просто.