好久沒寫了,格式什么的先算了
最近搞安卓app,需要使用到選擇日期的控件,首先使用了DatePickerDialog,繼承自AlertDialog,內部使用了DatePicker。
如果需要修改樣式的話就不是很方便了,可以自己派生一個DatePickerDialog的子類,再使用AlertDialog的方法設置樣式。
不過比較靈活且更兼容API Level 11之前平台的方法是產生一個AlertDialog,通過Bulider來調整樣式,使用SetView將一個DatePicker設為View。
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCalendar = Calendar.getInstance();
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final DatePicker dp = new DatePicker(getActivity());
dp.setCalendarViewShown(false);//注意:如果使用了setMaxDate必須關掉CalenderView,否則會報錯"FATAL EXCEPTION: main java.lang.NullPointerException",
long mindate = System.currentTimeMillis() - 1000L; //注意:如果不提前一秒的話會報錯"java.lang.IllegalArgumentException: fromDate: XXX does not precede toDate: XXX"
long maxdate = mindate + 7 * 24 * 3600 * 1000L; //設置DatePicker范圍,從今天起之后一周
dp.setMinDate(mindate);
dp.setMaxDate(maxdate);
builder.setView(dp);
builder.setTitle(getString(R.string.pls_select_date));
builder.setPositiveButton(getString(R.string.set), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO: Dispatch listener to Activity
String new_text = (dp.getMonth() + 1) + getString(R.string.month) + dp.getDayOfMonth() + getString(R.string.day);
mButton.setText(new_text); //可以設置日期之后修改Button文字之類的。
}
});
builder.setNegativeButton(getString(R.string.cancel), null);
builder.show();
}
});
需要注意的就是這兩點。