Селектор дня MaterialComponents.DatePicker выключен, и как изменить цвета? - PullRequest
1 голос
/ 26 мая 2020

Это моя ситуация, как вы можете видеть, у меня есть daterangepicker из библиотеки MaterialComponents.DatePicker. Круг для выбора дня сильно разряжен. Прежде чем кто-либо из вас предложит, я попытался изменить средство выбора даты на полноэкранный режим вместо диалогового окна, и все проблемы остались. При этом, если кто-то из вас предпочитает вносить изменения в полноэкранном режиме, меня это устраивает. Кстати, фрагмент, в котором вызывается datepicker, центрирован.

Цвета я понятия не имею, откуда он их взял, так что если кто знает, где и как изменить, скажите, пожалуйста. Кроме того, показанный фиолетовый цвет нигде не встречается в моих цветах. xml

enter image description here

Now, the code: This is my Datepicker (called by a options menu button):

MaterialDatePicker.Builder dateBuilder = MaterialDatePicker.Builder.dateRangePicker();
                CalendarConstraints.Builder constraintsBuilder = new CalendarConstraints.Builder();
                dateBuilder.setCalendarConstraints(constraintsBuilder.build());
                dateBuilder.setTitleText("Select your Dates");
                dateBuilder.setTheme(R.style.DatePickerTheme);
                MaterialDatePicker> datePicker = dateBuilder.build();
                datePicker.addOnCancelListener(new DialogInterface.OnCancelListener() {
                    @Override
                    public void onCancel(DialogInterface dialog) {
                        Log .d("DatePicker Activity", "Dialog was cancelled");
                    }
                });
                datePicker.addOnNegativeButtonClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Log.d("DatePicker Activity", "Dialog Negative Button was clicked");
                    }
                });
                datePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener>() {
                    @Override
                    public void onPositiveButtonClick(Pair selection) {
                        Log.d("DatePicker Activity", "Date String = ${picker.headerText}::  Date epoch values::${it.first}:: to :: ${it.second}");
                        SharedPreferences sharedPreferences = getActivity().getSharedPreferences("Settings", Context.MODE_PRIVATE);
                        SharedPreferences.Editor sEditor = sharedPreferences.edit();
                        sEditor.putLong("Start Date", selection.first);
                        sEditor.putLong("End Date", selection.second);
                        Toast.makeText(getActivity(), "Primeiro:" + selection.first.toString() + "SEgundo:" + selection.second.toString(), Toast.LENGTH_LONG).show();
                    }
                });
                assert getFragmentManager() != null;
                datePicker.show(getFragmentManager(), "RangePicker");

And this is my styles.xml: (A lot of people suggest putting the style inside the AppTheme which I just couldn't do!)



    <!-- Base application theme. -->
     @ color / colorPrimary  @ color / colorPrimaryDark  @ color / colorAccent  ложь  правда  

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Как описано в do c, вы должны использовать Тема компонентов материала .
Просто измените тему вашего приложения на:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
   ....
</style>

Достаточно исправить стиль и положение дня селектора в вашем сборщике.

enter image description here

Стиль по умолчанию основан на colorOnPrimary , colorPrimary и colorOnSurface, определенные в теме вашего приложения.
Если вы хотите настроить цвет, вы можете переопределить эти цвета, используя:

builder.setTheme(R.style.MaterialCalendarTheme);

с:

  <style name="MaterialCalendarTheme" parent="ThemeOverlay.MaterialComponents.MaterialCalendar">
    <item name="colorOnPrimary">@color/...</item>
    <item name="colorPrimary">@color/....</item>
  </style>

enter image description here

0 голосов
/ 26 мая 2020

Если вы собираетесь использовать материальные компоненты в своем приложении. Затем ваша AppTheme должна расширить родительскую тему MaterialComponents

<resources>
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="windowActionBar">false</item>
            <item name="windowNoTitle">true</item>
        </style>

        <!-- Picker styles and themes. -->
        <style name="DatePickerTheme" parent="Theme.MaterialComponents.DayNight">
            <item name="materialCalendarStyle">@style/Widget.MaterialComponents.MaterialCalendar</item>
            <item name="materialCalendarFullscreenTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar.Fullscreen</item>
            <item name="materialCalendarTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar</item>
        </style>
    </resources>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...