文章参考: https://blog.csdn.net/qq_33756493/article/details/78120743
参考以上连接文章,具体实现如下:
布局文件代码:
<?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="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btn_Date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
<Button
android:id="@+id/btn_Time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
<TextView
android:id="@+id/txtDate"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/txtTime"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
MainActivity代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView txtDate;
private TextView txtTime;
private Button btnDate;
private Button btnTime;
DateFormat format= DateFormat.getDateTimeInstance();
Calendar calendar= Calendar.getInstance(Locale.CHINA);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnDate= (Button) findViewById(R.id.btn_Date);
btnTime= (Button) findViewById(R.id.btn_Time);
txtDate= (TextView) findViewById(R.id.txtDate);
txtTime= (TextView) findViewById(R.id.txtTime);
btnDate.setOnClickListener(this);
btnTime.setOnClickListener(this);
}
/**
* 日期选择
* @param activity
* @param themeResId
* @param tv
* @param calendar
*/
public static void showDatePickerDialog(Activity activity, int themeResId, final TextView tv, Calendar calendar) {
// 直接创建一个DatePickerDialog对话框实例,并将它显示出来
new DatePickerDialog(activity, themeResId, new DatePickerDialog.OnDateSetListener() {
// 绑定监听器(How the parent is notified that the date is set.)
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// 此处得到选择的时间,可以进行你想要的操作
tv.setText("您选择了:" + year + "年" + (monthOfYear + 1) + "月" + dayOfMonth + "日");
}
}
// 设置初始日期
, calendar.get(Calendar.YEAR)
, calendar.get(Calendar.MONTH)
, calendar.get(Calendar.DAY_OF_MONTH)).show();
}
/**
* 时间选择
* @param activity
* @param themeResId
* @param tv
* @param calendar
*/
public static void showTimePickerDialog(Activity activity,int themeResId, final TextView tv, Calendar calendar) {
// Calendar c = Calendar.getInstance();
// 创建一个TimePickerDialog实例,并把它显示出来
// 解释一哈,Activity是context的子类
new TimePickerDialog( activity,themeResId,
// 绑定监听器
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
tv.setText("您选择了:" + hourOfDay + "时" + minute + "分");
}
}
// 设置初始时间
, calendar.get(Calendar.HOUR_OF_DAY)
, calendar.get(Calendar.MINUTE)
// true表示采用24小时制
,true).show();
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_Date:
showDatePickerDialog(this, 4, txtDate, calendar);;
break;
case R.id.btn_Time:
showTimePickerDialog(this, 4, txtTime, calendar);
break;
default:
break;
}
}
}
主要说明下,不同的Android版本下, showDatePickerDialog,showTimePickerDialog的第二个参数themeResId, 设置成不同的数字有不同的效果(测试使用了Android 4.4.2 Android 8.0), 现贴出8.0的部分效果图
设置成0的效果图:
设置成1的效果图:
设置成2的效果图:
其它效果就略过了。