如何在安卓对话框中设置默认显示为年份的日期选择器

5 人关注

我想知道如何在Android对话框 DatePicker 中设置默认显示年份。我们的情况是,首先用户必须在对话框 DatePicker 中选择年份,然后是月份,最后是日期。对于这个要求,我们需要在打开对话框的时候打开年份的显示。

PFB图像链接。请参考右边的图片,它应该是默认打开的。

5 个评论
你可以通过扩展 DatePicker 类来创建一个自定义视图。
谢谢你的回答,但我不需要在日期选择器中自定义视图,我需要使用相同的视图,只是要求默认打开年份视图。
你是否已经成功地打开了默认为年份的对话框?接受的答案只是设置了年份的默认值。
你找到答案了吗?我也有这个问题。
创建一个自定义视图对话框(参考编译'com.afollestad.material-dialogs:core:0.9.2.3'),有两个标签。在第一个标签中显示你需要手动创建的年份列表,点击该列表,你可以启用第二个标签,显示任何库中的日历。
android
android-datepicker
user6457240
user6457240
发布于 2016-09-26
3 个回答
Asadullah Mumtaz
Asadullah Mumtaz
发布于 2018-10-12
已采纳
0 人赞同

下面是DatePickerDialog的属性,你可以通过它实现这个用例

dpDialog.getDatePicker().getTouchables().get(0).performClick();
    
user7258333
user7258333
发布于 2018-10-12
0 人赞同

你可以使用日历和减去你想要的年份,例如。

public Dialog onCreateDialog(Bundle saveInstanceState)
    final Calendar c = Calendar.getInstance();
    c.add(Calendar.YEAR, -18);
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int day = c.get(Calendar.DAY_OF_MONTH);
    return new DatePickerDialog(getActivity(), this, year, month, day);
    
vinay mishra
vinay mishra
发布于 2018-10-12
0 人赞同

实施你的活动:

实现 DatePickerDialog.OnDateSetListener {

在onCreate中,当你点击按钮时,会得到日期选择器对话框。

calendar2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Initialize a new date picker dialog fragment
        DialogFragment dFragment = new DatePickerFragment();
      //  calendar2.setText(dateDisplay);
        // Show the date picker dialog fragment
        dFragment.show(getFragmentManager(), "Date Picker");

外面的oncreate

@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
  //  Calendar cal = new GregorianCalendar(year, month, day);
    month = month + 1;
    Log.d ( TAG, "onDateSet: mm/dd/yyy: " + month + "/" + day + "/" + year );
    String date = day + "/" + month + "/" + year;
 //   mDisplayDate.setText ( date );
    setDate(date);
private void setDate(String date) {
  //  final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
    ((TextView) findViewById(R.id.calendar2))
            .setText(date);
 public static class DatePickerFragment extends DialogFragment implements android.app.DatePickerDialog.OnDateSetListener {
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            final Calendar calendar = Calendar.getInstance();
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(Calendar.MONTH);
            int day = calendar.get(Calendar.DAY_OF_MONTH);
                Create a DatePickerDialog using Theme.
                    DatePickerDialog(Context context, int theme, DatePickerDialog.OnDateSetListener listener,
                        int year, int monthOfYear, int dayOfMonth)
            // DatePickerDialog THEME_DEVICE_DEFAULT_LIGHT
//            android.app.DatePickerDialog dpd = new android.app.DatePickerDialog(getActivity(),
//                    AlertDialog.THEME_DEVICE_DEFAULT_LIGHT, this, year, month, day);
          android.app.DatePickerDialog dpd = new android.app.DatePickerDialog(getActivity(),
                            R.style.DatePickerDialogTheme,  (DatePickerDialog.OnDateSetListener)getActivity(), year, month, day);
//            new DatePickerDialog(getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT,
//                    (DatePickerDialog.OnDateSetListener)
//                            getActivity(), year, month, day)
            // DatePickerDialog THEME_DEVICE_DEFAULT_DARK
            android.app.DatePickerDialog dpd2 = new android.app.DatePickerDialog(getActivity(),
                    AlertDialog.THEME_DEVICE_DEFAULT_DARK, this, year, month, day);
            // DatePickerDialog THEME_HOLO_LIGHT
            android.app.DatePickerDialog dpd3 = new android.app.DatePickerDialog(getActivity(),
                    AlertDialog.THEME_HOLO_LIGHT, this, year, month, day);
            dpd.getDatePicker().getTouchables().get(0).performClick();
            // DatePickerDialog THEME_HOLO_DARK
            android.app.DatePickerDialog dpd4 = new android.app.DatePickerDialog(getActivity(),
                    AlertDialog.THEME_HOLO_DARK, this, year, month, day);
            // DatePickerDialog THEME_TRADITIONAL
            android.app.DatePickerDialog dpd5 = new android.app.DatePickerDialog(getActivity(),
                    AlertDialog.THEME_TRADITIONAL, this, year, month, day);
//            TextView tv = new TextView(getActivity());
//            // Create a TextView programmatically
//            ViewGroup.LayoutParams lp = new RelativeLayout.LayoutParams(
//                    ViewGroup.LayoutParams.WRAP_CONTENT, // Width of TextView
//                    ViewGroup.LayoutParams.WRAP_CONTENT); // Height of TextView
//            tv.setLayoutParams(lp);
//            tv.setPadding(10, 10, 10, 10);
//            tv.setGravity(Gravity.CENTER);
//            tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP,20);
//            tv.setText(getResources().getText(R.string.Date_Of_Birth));
//            tv.setTextColor(Color.parseColor("#ff0000"));
//            tv.setBackgroundColor(Color.parseColor("#FFD2DAA7"));
            // Set the newly created TextView as a custom tile of DatePickerDialog
            //dpd.setCustomTitle(tv);
            // Or you can simply set a tile for DatePickerDialog
                setTitle(CharSequence title)
                    Set the title text for this dialog's window.
            dpd3.setTitle(getResources().getText(R.string.Date_Of_Birth));
            // Return the DatePickerDialog
            return dpd;
        public void onDateSet(DatePicker view, int year, int month, int day){
            // Do something with the chosen date
        month = month + 1;
        Log.d ( TAG, "onDateSet: mm/dd/yyy: " + month + "/" + day + "/" + year );
     //   dateDisplay = day + "/" + month + "/" + year;
      //  mDisplayDate.setText ( date );

In styles.xml