安卓:表示日期的控件

一、日期控件

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

运行结果:

相关推荐
SRC_BLUE_1743 分钟前
SQLI LABS | Less-39 GET-Stacked Query Injection-Intiger Based
android·网络安全·adb·less
无尽的大道4 小时前
Android打包流程图
android
内蒙深海大鲨鱼5 小时前
qt之ui开发
数据库·qt·ui
镭封5 小时前
android studio 配置过程
android·ide·android studio
夜雨星辰4875 小时前
Android Studio 学习——整体框架和概念
android·学习·android studio
邹阿涛涛涛涛涛涛6 小时前
月之暗面招 Android 开发,大家快来投简历呀
android·人工智能·aigc
IAM四十二6 小时前
Jetpack Compose State 你用对了吗?
android·android jetpack·composer
奶茶喵喵叫6 小时前
Android开发中的隐藏控件技巧
android
Winston Wood8 小时前
Android中Activity启动的模式
android
众乐认证8 小时前
Android Auto 不再用于旧手机
android·google·智能手机·android auto