我正在尝试使用DatePicker:
我的代码是:
DatePicker datePicker = (DatePicker) v.findViewById(R.id.dialog_date_datePicker);
datePicker.init(year, month, day, new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int month,
int day) {
mDate = new GregorianCalendar(year, month, day).getTime();
getArguments().putSerializable(EXTRA_DATE, mDate);
}
});
但是当我选择日期时,永远不会调用onDateChanged
方法。在谷歌搜索后,我发现如果我更改了日期选择器布局以包括:android:datePickerMode="spinner" />
并删除android:calendarViewShown="false"
,则会调用onDateChanged
并且代码可以正常工作,但日期选择器对话框看起来非常糟糕。<登记/>
我的布局是:
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_date_datePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:datePickerMode="spinner" />
<!-- android:calendarViewShown="false" -->
那么为什么calenderViewShown属性会导致问题?如何改善日期选择器UI对话框的外观呢?
答案 0 :(得分:0)
如果你想使用datepicker对话框而不需要使用DatePicker就这样做:
Calendar c = Calendar.getInstance();
DatePickerDialog datePickerDialog = new DatePickerDialog(SignUpActivity.this, android.R.style.Theme_Holo_Light_Dialog_MinWidth, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// TODO Auto-generated method stub
try {
Date d = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).parse(year+"-"+(monthOfYear+1)+"-"+dayOfMonth);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
datePickerDialog.getDatePicker().setCalendarViewShown(false);
datePickerDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
datePickerDialog.show();
答案 1 :(得分:0)
您也可以使用此库:Beautiful DatePicker UI
如果在AS上,请在依赖项中添加:compile 'com.github.flavienlaurent.datetimepicker:library:0.0.2'
此外,正如这个问题的指出:Datepicker
您可以使用它来解决问题。
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_date_datePicker"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:calendarViewShown="false"
android:datePickerMode="spinner" >
</DatePicker>