Главная » Работаем с CalendarView в Android | |
Сегодня мы разберем такой простой и всем известный элемент пользовательского интерфейса Android платформы, как календарь. Чтобы интегрировать стандартный календарь в свое приложение, разработчики используют элемент под названием CalendarView, который появился аж с 3-й версии операционной системы. С помощью различных атрибутов, можно покрутить и настроить вид календаря под свой вкус, хотя настроек не так уж много. Например, присутствуют такие атрибуты: - android:firstDayOfWeek - выставляем первый день недели; - android:minDate - минимальная дата, которую будет показывать календарь, которая задается в формате mm/dd/yyyy (месяц, день, год); - android:selectedWeekBackgroundColor - фоновый цвет для выбранной недели; - android:showWeekNumber - здесь мы можем выставить, показывать номер недели или нет; - android:weekNumberColor - цвет для номер недели; - android:weekSeparatorLineColor - цвет линии, разделяющей недели и тп. Мы не будем слишком кастомизировать свой календарь, а точнее вообще не будем, мы просто сделаем приложение, отображающее календарь и настроим ему слушателя изменений выбранной даты. Для каждого нажатия по любому дню в календаре мы, используя метод onSelectedDayChange (), будем показывать Toast сообщение с информацией о выбранной дате. Создаем новый проект, выбираем Blank Activityи минимальную версию Android 4.0+. В файле activity_main.xml создаем календарь:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical">
<CalendarView
android:id="@+id/calendar_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Теперь переходим к файлу MainActivity.java. Здесь мы объявляем CalendarView, ссылаемся на наш календарь в файле интерфейса, задаем ему слушателя смены даты setOnDateChangeListener, а также используя метод onSelectedDayChange, при смене даты выводим Toast сообщение с выбранной датой:
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.CalendarView;
import android.widget.CalendarView.OnDateChangeListener;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
// Используем объект CalendarView:
CalendarView mCalendarView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Связываемся с нашим календариком:
mCalendarView = (CalendarView)findViewById(R.id.calendar_view);
//Настраиваем слушателя смены даты:
mCalendarView.setOnDateChangeListener(new OnDateChangeListener(){
// Описываем метод выбора даты в календаре:
@Override
public void onSelectedDayChange(CalendarView view, int year,int month, int dayOfMonth) {
// При выборе любой даты отображаем Toast сообщение с данными о выбранной дате (Год, Месяц, День):
Toast.makeText(getApplicationContext(),
"Год: " + year + "\n" +
"Месяц: " + month + "\n" +
"День: " + dayOfMonth,
Toast.LENGTH_SHORT).show();
}});
}
}
Вот и все, на этом знакомство с системным Android календаря заканчивается, запускаем приложение и смотрим на результат: Работает нормально, правда почему то в Google считают, что январь это 0-й месяц, поэтому май показывает как 4. Чтобы исправить, можно в настройках Toast сообщения, добавить к значению месяца единицу. | |
|
Всего комментариев: 0 | |