欢迎光临散文网 会员登陆 & 注册

Android studio 最精简代码的日期选择器 只有 年 月

2023-07-05 04:20 作者:翼618  | 我要投稿



如果没用到可以删除对应代码


@RequiresApi(api = Build.VERSION_CODES.N)

    public static void openDateStartDialog(final TextView startdate, Context context) {

        final Calendar calendar = Calendar.getInstance();

        int yy = calendar.get(Calendar.YEAR);

        int mm = calendar.get(Calendar.MONTH);

        int dd = calendar.get(Calendar.DAY_OF_MONTH);

        new ContextThemeWrapper(context,android.R.style.Theme_Holo_Light_Dialog_NoActionBar);

        calendar.setTime(DateUtil.strToDate("yyyy-MM-dd", startdate.getText().toString().trim()));

        DatePickerDialog dlg = new DatePickerDialog(new ContextThemeWrapper(context,

                android.R.style.Theme_Holo_Light_Dialog_NoActionBar), null, yy, mm, dd) {

            @Override

            protected void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);

                LinearLayout mSpinners = (LinearLayout) findViewById(getContext().getResources().getIdentifier("android:id/pickers", null, null));

                if (mSpinners != null) {

                    NumberPicker mMonthSpinner = (NumberPicker) findViewById(getContext().getResources().getIdentifier("android:id/month", null, null));

                    NumberPicker mYearSpinner = (NumberPicker) findViewById(getContext().getResources().getIdentifier("android:id/year", null, null));

                    mSpinners.removeAllViews();


                    if (mYearSpinner != null) {

                        mSpinners.addView(mYearSpinner);

                    }

                    if (mMonthSpinner != null) {

                        mSpinners.addView(mMonthSpinner);

                    }


                }

                View dayPickerView = findViewById(getContext().getResources().getIdentifier("android:id/day", null, null));

                if(dayPickerView != null){

                    dayPickerView.setVisibility(View.GONE);

                }

            }


            @Override

            public void onDateChanged(DatePicker view, int year, int month, int day) {

                super.onDateChanged(view, year, month, day);

                setTitle("请选择对应的日期");

            }

        };

        dlg.setTitle("请选择对应的日期");

        dlg.setOnDateSetListener(new DatePickerDialog.OnDateSetListener() {

            @Override

            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

                startdate.setText(year + "-" + (month + 1 < 10 ? "0" + (month + 1) : (month + 1)) );

            }

        });

        dlg.show();

    }


下面附上对应的效果图

效果图


常用的  年月日 这里也贴出来了,当然改一下上面的也行,但是这个感觉根据对应版本号会好看一点,也是塞入一个TextView和this就可以了,你可以放在点击事件里面调用

使用方法: 

openDateStartDialog(tv_time, this);


     public static void openDateStartDialog(final TextView startdate,  Context context) {

        final Calendar localCalendar = Calendar.getInstance();

        localCalendar.setTime(DateUtil.strToDate("yyyy-MM-dd", startdate.getText().toString().trim()));

        new MonPickerDialog(context, new DatePickerDialog.OnDateSetListener() {

            @Override

            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

                localCalendar.set(Calendar.YEAR, year);

                localCalendar.set(Calendar.MONTH, month);

                localCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);

                String day = dayOfMonth >= 10 ? dayOfMonth + "" : "0" + dayOfMonth;

                startdate.setText(year + "-" + (month + 1 < 10 ? "0" + (month + 1) : (month + 1)) + "-" + day);


            }

        },

                localCalendar.get(Calendar.YEAR), localCalendar.get(Calendar.MONTH), localCalendar.get(Calendar.DAY_OF_MONTH)).show();

    }


    public static class MonPickerDialog extends DatePickerDialog {

        public MonPickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) {

            super(context, callBack, year, monthOfYear, dayOfMonth);

        }


        @Override

        public void onDateChanged(DatePicker view, int year, int month, int day) {

            super.onDateChanged(view, year, month, day);

        }

    }

效果图2



Android studio 最精简代码的日期选择器 只有 年 月的评论 (共 条)

分享到微博请遵守国家法律