Освой программирование играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

CalendarView

Компонент CalendarViewнаходится в разделе Widgets и выводит на экран календарь.

Через окно свойств практически ничего нельзя настроить по собственному вкусу. Поэтому следует переключиться в режим редактирования XML-кода и вручную добавить несколько атрибутов для тонкой настройки. Описание всех атрибутов можно взять из документации.


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <CalendarView
        android:id="@+id/calendarView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:onClick="onClick"
        android:selectedWeekBackgroundColor="#ff0000"
        android:weekNumberColor="#0000ff"
        android:weekSeparatorLineColor="#00ff00" />

</LinearLayout>

В данном случае я выбрал цвет для выбранной недели (красный), цвет для номера недели (синий) и цвет для разделителей (зелёный).

Выбранную дату можно отслеживать через метод setOnDateChangeListener():


@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);

	CalendarView calendarView = (CalendarView) findViewById(R.id.calendarView);
	calendarView.setOnDateChangeListener(new OnDateChangeListener() {

		@Override
		public void onSelectedDayChange(CalendarView view, int year,
				int month, int dayOfMonth) {
			int mYear = year;
			int mMonth = month;
			int mDay = dayOfMonth;
			String selectedDate = new StringBuilder().append(mMonth + 1)
					.append("-").append(mDay).append("-").append(mYear)
					.append(" ").toString();
			Toast.makeText(getApplicationContext(), selectedDate, Toast.LENGTH_LONG).show();
		}
	});
}

CalendarView

Дополнительное чтение

CleverPumpkin/CrunchyCalendar: A beautiful material calendar with endless scroll, range selection and a lot more!

prolificinteractive/material-calendarview - по уверению автора, лучший вариант календаря, чем системный.

dpreussler/clean-simple-calendar - ещё один календарь с настройками.

roomorama/Caldroid: A better calendar for Android - очень навороченный известный календарь.

mahendramahi/CalendarView - может этот понравится.

vikramkakkar/SublimePicker позволяет выбрать дату, время и повторяющие интервалы.

Applandeo/Material-Calendar-View: Material Calendar View for Android

Реклама