更改DatePickerDialog中的按钮之一的文本颜色?

Sus*_*ger 1 java android android-theme

我有一个日期选择器对话框,其主题是

<style name="DatePickerTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorAccent">@color/that_blue_color</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我创建此自定义主题是因为我想更改datePickerDialog的背景颜色。我设法改变了背景的颜色,选择器圆圈和按钮的文字颜色。但是我现在想更改CANCEL按钮的文本颜色,并OK保持按钮的文本颜色不变。我该怎么做?

She*_*ana 20

您可以为CANCEL按钮制作不同的样式,如下所示。

<style name="DatePickerTheme" parent="Theme.MaterialComponents.Light.Dialog.Alert">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:buttonBarNegativeButtonStyle">@style/DatePickerTheme.ButtonBarNegativeButtonStyle</item>
</style>

<style name="DatePickerTheme.ButtonBarNegativeButtonStyle" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
    <item name="android:textColor">@android:color/holo_red_light</item>
</style>
Run Code Online (Sandbox Code Playgroud)


aot*_*n16 9

        dialog.setOnShowListener(dialog -> {
            int positiveColor = ContextCompat.getColor(view.getContext(), R.color.default_blue_color);
            int negativeColor = ContextCompat.getColor(view.getContext(), R.color.font_hint);
            dialog.getButton(DatePickerDialog.BUTTON_POSITIVE).setTextColor(positiveColor);
            dialog.getButton(DatePickerDialog.BUTTON_NEGATIVE).setTextColor(negativeColor);
        });

        dialog.show();
Run Code Online (Sandbox Code Playgroud)

我在对话框的showListener.


ADM*_*ADM 6

您可以使用ButtonDialog并修改它的属性getButton()。请参见下面的示例。调用.show()其他明智的方式后得到按钮,它会给出一个null

 final Calendar c = Calendar.getInstance();
            int mYear = c.get(Calendar.YEAR);
            int  mMonth = c.get(Calendar.MONTH);
            int mDay = c.get(Calendar.DAY_OF_MONTH);
            DatePickerDialog datePickerDialog = new DatePickerDialog(ConstarintsActivity.this,
                    (view, year, monthOfYear, dayOfMonth) -> {


                    }, mYear, mMonth, mDay);
            datePickerDialog.show();
            datePickerDialog.getButton(DatePickerDialog.BUTTON_NEGATIVE).setTextColor(Color.GREEN);
Run Code Online (Sandbox Code Playgroud)