似乎任何使用Marshmallow(
Android 6.0)的人都无法在我的应用程序中使用DatePicketDialog.似乎遇到了某种我遇到的主题问题.我使用DialogFragment,它包含一个DatePicketDialog供用户选择生日.以下是Android 5.x和6.x的DialogFragment镜头.
我试图在DatePickerDialog构造函数中添加一个主题,但这使得DialogFragment全屏,我不希望这样.有谁知道我怎么能让DatePickerDialog看起来像是在Marshmallow之前?
更新1
这是我创建DialogFragment的代码:
DialogFragment ageFragment = new DatePickerDialogFragment();
ageFragment.show(getFragmentManager(), "datePicker");
这是DatePickerDialogFragment中的onCreateDialog:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker if no filters are set
Calendar cal = Calendar.getInstance();
// Set the date 18 years previous, since only 18 and older are allowed on the app
cal.add(Calendar.YEAR, -18);
int year, month, day;
if (iDialogListener.getYear() == -1 || iDialogListener.getMonth() == -1
|| iDialogListener.getDay() == -1) {
Calendar defaultCal = Calendar.getInstance();
// 40 is the default age to show
defaultCal.add(Calendar.YEAR, -40);
year = defaultCal.get(Calendar.YEAR);
month = defaultCal.get(Calendar.MONTH);
day = defaultCal.get(Calendar.DAY_OF_MONTH);
} else {
year = iDialogListener.getYear();
month = iDialogListener.getMonth();
day = iDialogListener.getDay();
}
DatePickerDialog datepicker = new DatePickerDialog(getActivity(), this, year, month, day);
datepicker.getDatePicker().setMaxDate(cal.getTimeInMillis());
Calendar minDate = Calendar.getInstance();
minDate.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR) - 100);
datepicker.getDatePicker().setMinDate(minDate.getTimeInMillis());
// Create a new instance of DatePickerDialog and return it
return datepicker;
}
在themes.xml中,唯一触及Dialogs的行是
@style/CustomDialogTheme
但是,如果我正在思考,那不会触及DialogFragment吗?
更新2
这是CustomDialogTheme:
@android:color/transparent
@null
@android:dimen/dialog_min_width_major
@android:dimen/dialog_min_width_minor