一、日期控件
(一)、DatePicker
DatePicker是一种安卓平台上常用的控件,用于让用户选择日期。它通常以日历的形式显示,并允许用户通过滑动或点击来选择年、月和日。
常用属性:
android:calendarViewShown
:是否显示日历视图,默认为true。若设为false,则只显示年、月和日的滚动选择器。- android:calendarTextColor : 日历列表的文本的颜色
- android:calendarViewShown:是否显示日历视图
- android:datePickerMode:组件外观,可选值:spinner,calendar 前者效果如下,默认效果是后者。
- android:calendarTextColor : 日历列表的文本的颜色
- android:calendarViewShown:是否显示日历视图
- android:datePickerMode:组件外观,可选值:spinner,calendar 前者效果如下,默认效果是后者
常用方法:
init(int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener)
:初始化DatePicker控件并设置选定日期及日期改变监听器。getYear()
:获取选中的年份。getMonth()
:获取选中的月份(范围为0-11)。getDayOfMonth()
:获取选中的日期。setMinDate(long minDate)
:设置最小日期,限制用户选择的最早日期。setMaxDate(long maxDate)
:设置最大日期,限制用户选择的最晚日期。
(二)、CalendarView
CalendarView是一个Android控件,用于显示日历和选择日期。它提供了一个交互式的界面,让用户可以浏览不同的月份,并选择特定的日期。
常用属性
android:date
:指定默认选中的日期,以YYYY-MM-DD格式表示。android:minDate
:指定可选日期的最小值,以YYYY-MM-DD格式表示。android:maxDate
:指定可选日期的最大值,以YYYY-MM-DD格式表示。android:weekNumberColor
:设置周数文字的颜色。android:focusedMonthDateColor
:设置当前月份中日期文字的颜色。android:unfocusedMonthDateColor
:设置非当前月份中日期文字的颜色。android:selectedWeekBackgroundColor
:设置选中日期所在周背景的颜色。android:selectedDateVerticalBar
:设置选中日期左侧的垂直条的颜色。android:shownWeekCount
:设置日历中显示的周数。
常用方法
setDate(long milliseconds)
:设置默认选中的日期。getDate()
:获取当前选中的日期,返回一个long类型的表示日期的毫秒数。setMinDate(long minDate)
:设置可选日期的最小值,即限制用户能够选择的最早日期。getMinDate()
:获取可选日期的最小值。setMaxDate(long maxDate)
:设置可选日期的最大值,即限制用户能够选择的最晚日期。getMaxDate()
:获取可选日期的最大值。setOnDateChangeListener(OnDateChangeListener listener)
:设置日期改变监听器,当用户选中不同的日期时触发该监听器。
二、例子
MainActivity :
public class MainActivity extends AppCompatActivity {
private CalendarView calendarView;
private DatePicker datePicker;
private TextView selectedDateTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
calendarView = findViewById(R.id.calendarView);
datePicker = findViewById(R.id.datePicker);
selectedDateTextView = findViewById(R.id.selectedDateTextView);
// 设置CalendarView的日期改变监听器
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
// 处理日期改变事件
String selectedDate = year + "-" + (month + 1) + "-" + dayOfMonth;
selectedDateTextView.setText("选中日期:" + selectedDate);
}
});
// 设置DatePicker的日期改变监听器
datePicker.init(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(),
new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// 处理日期改变事件
String selectedDate = year + "-" + (monthOfYear + 1) + "-" + dayOfMonth;
selectedDateTextView.setText("选中日期:" + selectedDate);
}
});
// 初始时显示当前日期
updateSelectedDate();
}
private void updateSelectedDate() {
int year = datePicker.getYear();
int month = datePicker.getMonth();
int dayOfMonth = datePicker.getDayOfMonth();
String selectedDate = year + "-" + (month + 1) + "-" + dayOfMonth;
selectedDateTextView.setText("选中日期:" + selectedDate);
}
}
activity_main:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<CalendarView
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<DatePicker
android:id="@+id/datePicker"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/selectedDateTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textSize="18sp" />
</LinearLayout>
运行结果: