新建一个空的activity,命名为:DatePickerActivity
public class DatePickerActivity extends AppCompatActivity implements View.OnClickListener, DatePickerDialog.OnDateSetListener {
private TextView tv_date;
private DatePicker dp_date;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_date_picker);
tv_date = findViewById(R.id.tv_date);
dp_date = findViewById(R.id.dp_date);
findViewById(R.id.btn_date).setOnClickListener(this);
findViewById(R.id.btn_ok).setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_date) {
Calendar calendar = Calendar.getInstance();
DatePickerDialog dialog = new DatePickerDialog(this, this,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
dialog.show();
} else if (v.getId() == R.id.btn_ok) {
String desc = String.format("您选择的日期是%d年%d月%d日", dp_date.getYear(), dp_date.getMonth() + 1, dp_date.getDayOfMonth());
tv_date.setText(desc);
}
}
/**
* 获得用户选择的具体日期
* @param view DatePicker
* @param year 年
* @param month 月 注意:月份的起始值为0,所以这里要记得+1
* @param dayOfMonth 日
*/
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
String desc = String.format("您选择的日期是%d年%d月%d日", year, month + 1, dayOfMonth);
tv_date.setText(desc);
}
}
DatePickerActivity对应的xml:activity_date_picker的布局如下
<?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:padding="5dp"
android:orientation="vertical">
<Button
android:id="@+id/btn_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="请选择日期"
android:textSize="20sp" />
<DatePicker
android:id="@+id/dp_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:calendarViewShown="false"
android:datePickerMode="spinner" />
<Button
android:id="@+id/btn_ok"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="确定"
android:textSize="20sp" />
<TextView
android:id="@+id/tv_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:textSize="17sp" />
</LinearLayout>
日期选择器DatePicker 有2种展示风格,默认是日历风格
- 在xml中通过 datePickerMode 来设置风格
- 取值为calendar 代表日历风格;
- 取值为spinner 代表下拉框风格,这时设置android:calendarViewShown="false" 日历才会消失
效果图如下所示:
- 左边的是日历风格
- 右边的是下拉框风格