当我在Android 3.2和android 4.0.3中运行我的代码时,它显示了不同的日期选择器..我希望日期选择器像第一个图像的轮盘..我知道2.3.3显示旧的选择器..但我不喜欢我不知道为什么我在4.0.3中变老了,这在3.2中是新的。它也与Number Picker相同。
这是我的代码:
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
if (picker == 1) {
final long lDate = mDay;
dateStart.set(Calendar.YEAR, mYear);
dateStart.set(Calendar.MONTH, mMonth);
dateStart.set(Calendar.DATE, mDay);
Log.d("startdate", "" + dateStart);
if (lDate != -1) {
UpdateStartDateTimeView();
return;
}
}
updateDisplay();
}
};
答案 0 :(得分:1)
如果您使用原生选择器,Android会自动选择与当前版本对应的。通过创建自定义对话框,您只能确保在Android版本中显示唯一对话框。因此,您需要了解独特的选择器是否值得设计自定义选择器。
答案 1 :(得分:0)
DatePickerDialog有一个接受主题的构造函数
DatePickerDialog(Context context, int theme, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)
只需使用
更新您的代码即可用于轻型全息主题
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
android.R.style.Theme_Holo_Light_Dialog_NoActionBar,
new DateListener(v), mTime.year, mTime.month, mTime.monthDay);
或
黑暗的全息主题
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
android.R.style.Theme_Holo__Dialog_NoActionBar,
new DateListener(v), mTime.year, mTime.month, mTime.monthDay);
答案 2 :(得分:0)
如果我理解你的话,你就会在Andoid版本4中获得一个旧的对话框样式。当我为对话框片段设置 STYLE_NO_FRAME 时,我遇到了这个问题。在这种情况下,日期选择器总是旧的设计,我不知道为什么会这样。如果您想要始终获得现代UI,请确保将 STYLE_NORMAL 设置为对话框片段。为此,您需要在对话框片段的OnCreate回调方法中添加以下行。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, 0);
}