【问题标题】:Change DatePicker header text color Android更改 DatePicker 标题文本颜色 Android
【发布时间】:2019-07-31 13:55:35
【问题描述】:

我没有使用 MaterialDialog 之类的库,我只是在自定义对话框中使用 Android 的默认 DatePicker。我想要的是更改标题背景和文本。背景(透明)有效,但文字无效。这就是我到目前为止所做的:

date_time_dialog_picker.xml 布局中的 DatePicker

<DatePicker
            android:id="@+id/datePickerDialog"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:calendarViewShown="true"
            android:datePickerMode="calendar"
            android:layout_gravity="center_horizontal"
            android:endYear="2100"
            android:maxDate="12/31/2100"
            android:minDate="01/01/2019"
            android:spinnersShown="true"
            style="@style/CalendarDatePickerDialog"
            android:startYear="2019" />

风格

<style name="CalendarDatePickerDialog" parent="Theme.AppCompat.Light">
        <item name="android:headerBackground">@android:color/transparent</item>
        <item name="android:colorControlNormal">@color/colorPrimary</item>
        <item name="android:colorControlHighlight">@color/colorPrimary</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorAccent">@color/colorPrimary</item>
        <item name="android:textColorPrimaryInverse">@color/colorPrimaryDark</item> <!-- header date, month color && calendar text highlight color -->
        <item name="android:textColorSecondaryInverse">@color/colorPrimaryDark</item> <!-- header year color -->
    </style>

然后是java代码

private void showDatePicker() {
        LayoutInflater inflater = getLayoutInflater();
        final View customView = inflater.inflate(R.layout.date_time_dialog_picker, null);
 Calendar dateTimeCalendar = Calendar.getInstance();
dateTimeCalendar.setTimeZone(TimeZone.getDefault());
year = dateTimeCalendar.get(Calendar.YEAR);
        month = dateTimeCalendar.get(Calendar.MONTH);
        day = dateTimeCalendar.get(Calendar.DAY_OF_MONTH);

 final DatePicker dpStartDate = customView.findViewById(R.id.datePickerDialog);
 dpStartDate.init(year, month, day, new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker datePicker, int year, int month, int day) {
                MyActivity.this.year = year;
                MyActivity.this.month = month;
                MyActivity.this.day = day;
            }
        });

AlertDialog.Builder builder = new AlertDialog.Builder(AddPermessoActivity.this);
        builder.setView(customView); // Set the view of the dialog to your custom layout
        builder.setTitle("");
        builder.setPositiveButton("Set", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i(TAG, "date: " + MyActivity.this.year + " " + MyActivity.this.month + " " + MyActivity.this.day);
                dialog.dismiss();
            }});

        // Create and show the dialog
        builder.create().show();
}

所以,看来只有这个属性有效

 <item name="android:headerBackground">@android:color/transparent</item>

谢谢

【问题讨论】:

  • 你试过android:textColorPrimary吗?
  • 是的,也没用

标签: java android android-theme android-styles android-datepicker


【解决方案1】:

添加

<item name="android:textColorPrimaryInverse">@color/colorPrimary</item>

在应用基础主题下

 <!-- Base application theme. -->
 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

     <!-- header date, month color && calendar text highlight color -->
    <item name="android:textColorPrimaryInverse">@color/colorPrimary</item> 
 </style>

【讨论】:

    猜你喜欢
    • 2017-07-11
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多