为 DatePicker 自定义样式 Theme.Holo.Light.Dialog.MinWidth

imp*_*ble 4 android android-datepicker android-styles

我正在使用 datePicker 输入日期。

<style name="DatePickerTheme" parent="@android:style/Theme.Holo.Light.Dialog.MinWidth">
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>
Run Code Online (Sandbox Code Playgroud)

并在 Activity.java 中

public void showDatePickerDialog(View v) {
        DialogFragment newFragment = new Login.DatePickerFragment();
        newFragment.show(getSupportFragmentManager(), "datePicker");
    }

    public static class DatePickerFragment extends DialogFragment
            implements DatePickerDialog.OnDateSetListener {

        @NonNull
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            return new DatePickerDialog(getActivity(), R.style.DatePickerTheme, this, 1995, 0, 1);
        }

        public void onDateSet(DatePicker view, int year, int month, int day){                
                    dateSelected = year+"-"+month+"-"+day;

        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是我得到了一个我不想要的背景图块。

我得到这个

但我想要

编辑过的

小智 7

此行可以帮助:

datePickerDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
Run Code Online (Sandbox Code Playgroud)


Lea*_*eat 2

我刚刚用kotlin解决了上面的问题。对于样式AlertDialog.THEME_HOLO_DARK也已弃用,而是在下面的代码中。

val c = Calendar.getInstance()
    val year = c.get(Calendar.YEAR)
    val month = c.get(Calendar.MONTH)
    val day = c.get(Calendar.DAY_OF_MONTH)

    val dpd = DatePickerDialog(this, android.R.style.Theme_Holo_Light_Dialog_MinWidth,
            DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth ->
        var calendar = GregorianCalendar(year,monthOfYear,dayOfMonth)
        setDate(calendar)

    }, year, month, day)
    dpd.window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
    dpd.show()
Run Code Online (Sandbox Code Playgroud)