1

当我在 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();
    }
};

这是我在 3.2 中得到的 这是我在 4.0.3 中得到的

4

3 回答 3

1

如果使用原生选择器,Android 会自动选择当前版本对应的。您只能通过创建自定义对话框来确保呈现唯一的对话框,无论 Android 版本如何。因此,您需要查看独特的选择器是否值得设计自定义选择器。

于 2013-02-06T12:06:39.910 回答
0

如果我理解正确,那么您将在 4 以上的 Andoid 版本中获得旧的对话框样式。当我为对话框片段设置STYLE_NO_FRAME时遇到了这个问题。在这种情况下,日期选择器的设计一直很旧,我不知道为什么会这样。如果您想始终获得现代 UI,请确保将STYLE_NORMAL设置为对话框片段。为此,您需要在对话框片段的 OnCreate 回调方法中添加以下行。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(DialogFragment.STYLE_NORMAL, 0);
}
于 2014-04-07T00:57:37.097 回答
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);
于 2013-08-19T14:38:43.383 回答