安卓:表示日期的控件

一、日期控件

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

运行结果:

相关推荐
阿巴斯甜8 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker9 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952710 小时前
Andorid Google 登录接入文档
android
黄林晴11 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_1 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android