运行截图
public void showPickerDialog(){
AlertDialog.Builder builder=new AlertDialog.Builder(AddBallActivity.this);
View view= LayoutInflater.from(AddBallActivity.this).inflate(
R.layout.date_time_picker,null);
final DatePicker datePicker=view.findViewById(R.id.picker_date);
TimePicker timePicker=view.findViewById(R.id.picker_time);
//在xml文件中设置不起作用,在代码中实现
datePicker.setCalendarViewShown(false);
datePicker.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
year=datePicker.getYear();
month=datePicker.getMonth();
day=datePicker.getDayOfMonth();
return true;
}
});
//api要求26,所以用以上代替实现
/*datePicker.setOnDateChangedListener(new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year1, int monthOfYear, int dayOfMonth) {
year=year1;
month=monthOfYear;
day=dayOfMonth;
}
});*/
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
hour=hourOfDay;
min=minute;
}
});
TextView cancel=view.findViewById(R.id.picker_cancel);
TextView confirm=view.findViewById(R.id.picker_confirm);
builder.setView(view);
final AlertDialog dialog=builder.create();
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String s=year+"-"+month+"-"+day+" "+hour+":"+min;
addTime.setText(s);
dialog.dismiss();
}
});
dialog.show();
//每次进入此dialog就赋值
year=datePicker.getYear();
month=datePicker.getMonth();
day=datePicker.getDayOfMonth();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
hour=timePicker.getHour();
min=timePicker.getMinute();
}else{
hour=timePicker.getCurrentHour();
min=timePicker.getCurrentMinute();
}
}
timePicker.getHour();
timePicker.getMinute();要求api23,使用timePicker.getCurrentHour();timePicker.getCurrentMinute();匹配api23以下的系统
setOnDateChangedListener要求api26,所以用onTouchListener代替,达到更新时间的操作
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<DatePicker
android:id="@+id/picker_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:datePickerMode="spinner"
android:layout_gravity="center"
android:spinnersShown="true"></DatePicker>
<TimePicker
android:id="@+id/picker_time"
android:layout_marginTop="-20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:timePickerMode="spinner"></TimePicker>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<TextView
android:id="@+id/picker_cancel"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:layout_height="50dp"
android:textSize="18sp"
android:clickable="true"
android:background="@drawable/time_picker"
android:text="取消"/>
<TextView
android:id="@+id/picker_confirm"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:layout_height="50dp"
android:clickable="true"
android:textSize="18sp"
android:background="@drawable/time_picker"
android:text="确定"/>
</LinearLayout>
</LinearLayout>
系统默认的picker带有时钟和日历,添加android:datePickerMode="spinner"android:timePickerMode="spinner"可以消去时钟日历