安卓:表示日期的控件

一、日期控件

(一)、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 :

java 复制代码
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:

html 复制代码
<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>

运行结果:

相关推荐
tongyiixiaohuang7 小时前
WMS已发货状态反写金蝶云星空:单策略实战教程
android
好的佩奇8 小时前
Dart 之类修饰符
android·flutter·dart
alexhilton9 小时前
用Konsist与Lint强制执行设计系统契约
android·kotlin·android jetpack
北京自在科技13 小时前
谷歌安卓 Gemini 迎来界面改版,Find Hub 接入 Gemini 支持物品记忆查找
android·安卓
YB137515 小时前
Jetpack Compose 动画Modifier.animateItem()
android
2401_8858850416 小时前
巴林语音通知接口如何对接?系统告警语音API接入教程
android·前端·网络·python·语音识别
收纳过往16 小时前
数据库加索引的时机:慢查询日志说话
android·开发语言·数据库·python·低代码·rxjava
狂热开发者17 小时前
车载中控要给鸿蒙用户,能不能和 Android 共用一个二维码?
android·华为·harmonyos
.Bryce.18 小时前
T2-LLM评测不等于Agent评测
android·java·人工智能·后端·gpt·agent·1024程序员节
美狐美颜SDK开放平台19 小时前
视频美颜SDK如何应对快速转头与大幅度面部动作?
android·人工智能·ios·音视频·直播美颜sdk·视频美颜sdk