我想在用户点击按钮后将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;
答案 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