datePickerDialog spinner而不是od calendar java programatically api 24

时间:2017-03-30 20:29:37

标签: android

我想在用户点击按钮后将datePicker显示为对话框。我遵循了这个教程:https://developer.android.com/guide/topics/ui/controls/pickers.html并且它适用于fina但是我显示的是日历而不是微调器。我尝试了很多东西,例如 1)设置主题有模式微调器, 2)有一个api:

    DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day);
    dialog.getDatePicker().setCalendarViewShown(false)
    dialog.getDatePicker().setSpinnerShown(true)

但这些方法已弃用且无效。

唯一有效的是我反编译DatePicker并且有一个代码:

   private static final int MODE_SPINNER = 1;
   private static final int MODE_CALENDAR = 2;

    final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DatePicker,
            defStyleAttr, defStyleRes);
    final int mode = a.getInt(R.styleable.DatePicker_datePickerMode, MODE_SPINNER);
    final int firstDayOfWeek = a.getInt(R.styleable.DatePicker_firstDayOfWeek, 0);
    a.recycle();

    switch (mode) {
        case MODE_CALENDAR:
            mDelegate = createCalendarUIDelegate(context, attrs, defStyleAttr, defStyleRes);
            break;
        case MODE_SPINNER:
        default:
            mDelegate = createSpinnerUIDelegate(context, attrs, defStyleAttr, defStyleRes);
            break;
    }

如果我在调试模式下将“mode”更改为value =“1”,则会出现微调器。但是我怎样才能设置这个值?如何将样式R.styleable.DatePicker_datePickerMode设置为1?

另外R是某种内部 - 不知道它是什么:

    import com.android.internal.R;

2 个答案:

答案 0 :(得分:0)

您可以使用主题设置像日期选择器一样的微调器。如下。

DatePickerDialog mDatePickerDialog = new DatePickerDialog(getActivity(),android.R.style.Theme_Holo_Light, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

                }
            }, YEAR, MONTH, DAY);

mDatePickerDialog.show();

注意:请参阅DatePickerDialog构造函数参数android.R.style.Theme_Holo_Light这将使您的对话框成为微调器。

希望这适合你。

答案 1 :(得分:0)

在此API中,这是一个错误。 我找到了解决方法https://gist.github.com/jeffdgr8/6bc5f990bf0c13a7334ce385d482af9f