当前位置:   article > 正文

Android开发之日期时间控件选择_android日期选择控件

android日期选择控件

Android开发之日期时间控件选择


前言

整合Android原生控件(日期控件DatePicker、时间控件TimePicker)实现选择日期、时间绑定。
本文仅仅是一种参考,不光是时间控件,自定义的Layout一样可以采用这种方式。
涉及技术要点:
1.控件事件绑定
2.弹出框AlertDialog
3.日期格式化SimpleDateFormat
弹出效果图


一、创建弹出Layout

1.1 新建Layout,修改样式为LinearLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">


</LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

1.2 Layout中添加日期和时间控件

注意需要将控件的calendarViewShown指定为false及datePickerMode属性指定为spinner

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <DatePicker
        android:id="@+id/dialog_datetime_date_picker"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:calendarViewShown="false"
        android:datePickerMode="spinner"/>

    <TimePicker
        android:id="@+id/dialog_datetime_time_picker"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:calendarViewShown="false"
        android:datePickerMode="spinner" />

</LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

二、新建DateTimeDialog

创建DateTimeDialog类是为了将方法封装,以便我项目多次调用

public class DateTimeDialog {
   

}
  • 1
  • 2
  • 3
  • 4

2.1 创建静态方法

2.1.1 创建SetDateDialog,用于选择日期

public static void SetDateDialog(Context context, Activity activity, TextView textView, String... title) {
   
}
  • 1
  • 2
  • 3

这里我们将引用控件的context、activity作为参数传入方法中,方便我们动态加载Layout和指定AlertDialog弹出所在的Activity,避免弹出框无法显示。
textView参数为需要绑定选择的控件,并且在选择之后,会将选择的日期返回给textView
titile是可选参数,指定弹出框的标题,不指定的话,会默认为“选择日期”

2.1.2 SetDateDialog中绑定textView的click事件

给textView绑定事件后,在用户点击控件时即可执行相应的事件内容,在此我们需要的是用户点击控件时,弹出日期选择框。

textView.setOnClickListener(view -> {
   
	AlertDialog.Builder builder = new AlertDialog.Builder(activity);
	builder.setView(view1);
	builder.create().show();
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

由于我们的控件中含有时间控件,需要隐藏

            View view1 = LayoutInflater.from(context).inflate(R.layout.dialog_datetime, null);
            final TimePicker timePicker = view1.findViewById(R.id.dialog_datetime_time_picker);
                        timePicker.setVisibility(View.GONE);
            

  • 1
  • 2
  • 3
  • 4
  • 5

如果textView有默认值,则在弹出的时候需要将textView的日期带入弹出框中

            final DatePicker datePicker = view1.findViewById(R.id.dialog_datetime_date_picker);
            Calendar calendar;
            String strDate = textView.getText().toString();
            calendar = convertDateToCalendar(strDate);
            datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), null);

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

设置弹出框的标题

            if (title != null && title.length > 0
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/534786?site
    推荐阅读
    相关标签
      

    闽ICP备14008679号