首页 > 解决方案 > DatePickerDialog Header 文本边距问题 Android

问题描述

我在 CustomDialogFragment 中使用 DatePickerDialog。它在所有设备上都可以正常工作,但在具有 OS 6.0.1 (Marshmallow) 的 Moto G 手机中出现问题。在最左边显示 2018 年和星期五。但在其他设备中它工作正常。

这是我的代码片段和截图: -

DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), this, year, month, day);
            datePickerDialog.getDatePicker().init(year, month, day, new DatePicker.OnDateChangedListener() {
                @Override
                public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

                    if(getArguments().getString("activity").equalsIgnoreCase("RegisterActivity")){
                        RegisterActivity.etExp.setText(dayOfMonth + "/" + (monthOfYear + 1) + "/" + year);
                    } else {
                        if (getArguments().getString("from", "").equalsIgnoreCase("Start")) {
                            SortRightFragment.tvStartDate.setText(dayOfMonth + "/" + (monthOfYear + 1) + "/" + year);
                        }
                        if (getArguments().getString("from", "").equalsIgnoreCase("End")) {
                            SortRightFragment.tvEndDate.setText(dayOfMonth + "/" + (monthOfYear + 1) + "/" + year);
                        }
                    }
                    datePickerDialog.cancel();
                }
            });

            datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.text_cancel), new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    if (which == DialogInterface.BUTTON_NEGATIVE) {
                    }
                }
            });


            datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.text_clear), new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    if (which == DialogInterface.BUTTON_POSITIVE) {
                        if(getArguments().getString("activity").equalsIgnoreCase("RegisterActivity")){
                            RegisterActivity.etExp.setText("");
                        } else {
                            if (getArguments().getString("from", "").equalsIgnoreCase("Start")) {
                                SortRightFragment.tvStartDate.setText("");
                            }
                            if (getArguments().getString("from", "").equalsIgnoreCase("End")) {
                                SortRightFragment.tvEndDate.setText("");
                            }
                        }
                    }
                }
            });

在此处输入图像描述

提前致谢!!

标签: androidandroid-datepicker

解决方案


由于DatePickerDialogextendsAlertDialog可能这对你有用:
首先找到标题 TextView 然后设置它的填充:

TextView tv = datePickerDialog.findViewById(getResources().getIdentifier("alertTitle", "id", "android"));

这也可以:

TextView tv = (TextView) datePickerDialog.findViewById(R.id.alertTitle);

将填充值更改为您喜欢的值:

tv.setPadding(2, 0, 0, 0);

推荐阅读