396 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			396 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.google.android.material.datepicker;
 | |
| 
 | |
| import android.content.Context;
 | |
| import android.content.res.Resources;
 | |
| import android.graphics.Canvas;
 | |
| import android.os.Bundle;
 | |
| import android.view.ContextThemeWrapper;
 | |
| import android.view.LayoutInflater;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import android.widget.GridView;
 | |
| import android.widget.ListAdapter;
 | |
| import androidx.core.util.Pair;
 | |
| import androidx.core.view.AccessibilityDelegateCompat;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 | |
| import androidx.recyclerview.widget.GridLayoutManager;
 | |
| import androidx.recyclerview.widget.LinearLayoutManager;
 | |
| import androidx.recyclerview.widget.PagerSnapHelper;
 | |
| import androidx.recyclerview.widget.RecyclerView;
 | |
| import com.google.android.material.R;
 | |
| import com.google.android.material.button.MaterialButton;
 | |
| import java.util.Calendar;
 | |
| import java.util.Iterator;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public final class MaterialCalendar<S> extends PickerFragment<S> {
 | |
|     private static final String CALENDAR_CONSTRAINTS_KEY = "CALENDAR_CONSTRAINTS_KEY";
 | |
|     private static final String CURRENT_MONTH_KEY = "CURRENT_MONTH_KEY";
 | |
|     private static final String DAY_VIEW_DECORATOR_KEY = "DAY_VIEW_DECORATOR_KEY";
 | |
|     private static final String GRID_SELECTOR_KEY = "GRID_SELECTOR_KEY";
 | |
|     private static final int SMOOTH_SCROLL_MAX = 3;
 | |
|     private static final String THEME_RES_ID_KEY = "THEME_RES_ID_KEY";
 | |
|     private CalendarConstraints calendarConstraints;
 | |
|     private CalendarSelector calendarSelector;
 | |
|     private CalendarStyle calendarStyle;
 | |
|     private Month current;
 | |
|     private DateSelector<S> dateSelector;
 | |
|     private View dayFrame;
 | |
|     private DayViewDecorator dayViewDecorator;
 | |
|     private View monthNext;
 | |
|     private View monthPrev;
 | |
|     private RecyclerView recyclerView;
 | |
|     private int themeResId;
 | |
|     private View yearFrame;
 | |
|     private RecyclerView yearSelector;
 | |
|     static final Object MONTHS_VIEW_GROUP_TAG = "MONTHS_VIEW_GROUP_TAG";
 | |
|     static final Object NAVIGATION_PREV_TAG = "NAVIGATION_PREV_TAG";
 | |
|     static final Object NAVIGATION_NEXT_TAG = "NAVIGATION_NEXT_TAG";
 | |
|     static final Object SELECTOR_TOGGLE_TAG = "SELECTOR_TOGGLE_TAG";
 | |
| 
 | |
|     enum CalendarSelector {
 | |
|         DAY,
 | |
|         YEAR
 | |
|     }
 | |
| 
 | |
|     interface OnDayClickListener {
 | |
|         void onDayClick(long j);
 | |
|     }
 | |
| 
 | |
|     CalendarConstraints getCalendarConstraints() {
 | |
|         return this.calendarConstraints;
 | |
|     }
 | |
| 
 | |
|     CalendarStyle getCalendarStyle() {
 | |
|         return this.calendarStyle;
 | |
|     }
 | |
| 
 | |
|     Month getCurrentMonth() {
 | |
|         return this.current;
 | |
|     }
 | |
| 
 | |
|     @Override // com.google.android.material.datepicker.PickerFragment
 | |
|     public DateSelector<S> getDateSelector() {
 | |
|         return this.dateSelector;
 | |
|     }
 | |
| 
 | |
|     public static <T> MaterialCalendar<T> newInstance(DateSelector<T> dateSelector, int i, CalendarConstraints calendarConstraints) {
 | |
|         return newInstance(dateSelector, i, calendarConstraints, null);
 | |
|     }
 | |
| 
 | |
|     public static <T> MaterialCalendar<T> newInstance(DateSelector<T> dateSelector, int i, CalendarConstraints calendarConstraints, DayViewDecorator dayViewDecorator) {
 | |
|         MaterialCalendar<T> materialCalendar = new MaterialCalendar<>();
 | |
|         Bundle bundle = new Bundle();
 | |
|         bundle.putInt(THEME_RES_ID_KEY, i);
 | |
|         bundle.putParcelable(GRID_SELECTOR_KEY, dateSelector);
 | |
|         bundle.putParcelable(CALENDAR_CONSTRAINTS_KEY, calendarConstraints);
 | |
|         bundle.putParcelable(DAY_VIEW_DECORATOR_KEY, dayViewDecorator);
 | |
|         bundle.putParcelable(CURRENT_MONTH_KEY, calendarConstraints.getOpenAt());
 | |
|         materialCalendar.setArguments(bundle);
 | |
|         return materialCalendar;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.fragment.app.Fragment
 | |
|     public void onSaveInstanceState(Bundle bundle) {
 | |
|         super.onSaveInstanceState(bundle);
 | |
|         bundle.putInt(THEME_RES_ID_KEY, this.themeResId);
 | |
|         bundle.putParcelable(GRID_SELECTOR_KEY, this.dateSelector);
 | |
|         bundle.putParcelable(CALENDAR_CONSTRAINTS_KEY, this.calendarConstraints);
 | |
|         bundle.putParcelable(DAY_VIEW_DECORATOR_KEY, this.dayViewDecorator);
 | |
|         bundle.putParcelable(CURRENT_MONTH_KEY, this.current);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.fragment.app.Fragment
 | |
|     public void onCreate(Bundle bundle) {
 | |
|         super.onCreate(bundle);
 | |
|         if (bundle == null) {
 | |
|             bundle = getArguments();
 | |
|         }
 | |
|         this.themeResId = bundle.getInt(THEME_RES_ID_KEY);
 | |
|         this.dateSelector = (DateSelector) bundle.getParcelable(GRID_SELECTOR_KEY);
 | |
|         this.calendarConstraints = (CalendarConstraints) bundle.getParcelable(CALENDAR_CONSTRAINTS_KEY);
 | |
|         this.dayViewDecorator = (DayViewDecorator) bundle.getParcelable(DAY_VIEW_DECORATOR_KEY);
 | |
|         this.current = (Month) bundle.getParcelable(CURRENT_MONTH_KEY);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.fragment.app.Fragment
 | |
|     public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
 | |
|         int i;
 | |
|         final int i2;
 | |
|         ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(getContext(), this.themeResId);
 | |
|         this.calendarStyle = new CalendarStyle(contextThemeWrapper);
 | |
|         LayoutInflater cloneInContext = layoutInflater.cloneInContext(contextThemeWrapper);
 | |
|         Month start = this.calendarConstraints.getStart();
 | |
|         if (MaterialDatePicker.isFullscreen(contextThemeWrapper)) {
 | |
|             i = R.layout.mtrl_calendar_vertical;
 | |
|             i2 = 1;
 | |
|         } else {
 | |
|             i = R.layout.mtrl_calendar_horizontal;
 | |
|             i2 = 0;
 | |
|         }
 | |
|         View inflate = cloneInContext.inflate(i, viewGroup, false);
 | |
|         inflate.setMinimumHeight(getDialogPickerHeight(requireContext()));
 | |
|         GridView gridView = (GridView) inflate.findViewById(R.id.mtrl_calendar_days_of_week);
 | |
|         ViewCompat.setAccessibilityDelegate(gridView, new AccessibilityDelegateCompat() { // from class: com.google.android.material.datepicker.MaterialCalendar.1
 | |
|             @Override // androidx.core.view.AccessibilityDelegateCompat
 | |
|             public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
 | |
|                 super.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfoCompat);
 | |
|                 accessibilityNodeInfoCompat.setCollectionInfo(null);
 | |
|             }
 | |
|         });
 | |
|         int firstDayOfWeek = this.calendarConstraints.getFirstDayOfWeek();
 | |
|         gridView.setAdapter((ListAdapter) (firstDayOfWeek > 0 ? new DaysOfWeekAdapter(firstDayOfWeek) : new DaysOfWeekAdapter()));
 | |
|         gridView.setNumColumns(start.daysInWeek);
 | |
|         gridView.setEnabled(false);
 | |
|         this.recyclerView = (RecyclerView) inflate.findViewById(R.id.mtrl_calendar_months);
 | |
|         this.recyclerView.setLayoutManager(new SmoothCalendarLayoutManager(getContext(), i2, false) { // from class: com.google.android.material.datepicker.MaterialCalendar.2
 | |
|             @Override // androidx.recyclerview.widget.LinearLayoutManager
 | |
|             protected void calculateExtraLayoutSpace(RecyclerView.State state, int[] iArr) {
 | |
|                 if (i2 == 0) {
 | |
|                     iArr[0] = MaterialCalendar.this.recyclerView.getWidth();
 | |
|                     iArr[1] = MaterialCalendar.this.recyclerView.getWidth();
 | |
|                 } else {
 | |
|                     iArr[0] = MaterialCalendar.this.recyclerView.getHeight();
 | |
|                     iArr[1] = MaterialCalendar.this.recyclerView.getHeight();
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|         this.recyclerView.setTag(MONTHS_VIEW_GROUP_TAG);
 | |
|         MonthsPagerAdapter monthsPagerAdapter = new MonthsPagerAdapter(contextThemeWrapper, this.dateSelector, this.calendarConstraints, this.dayViewDecorator, new OnDayClickListener() { // from class: com.google.android.material.datepicker.MaterialCalendar.3
 | |
|             /* JADX WARN: Multi-variable type inference failed */
 | |
|             @Override // com.google.android.material.datepicker.MaterialCalendar.OnDayClickListener
 | |
|             public void onDayClick(long j) {
 | |
|                 if (MaterialCalendar.this.calendarConstraints.getDateValidator().isValid(j)) {
 | |
|                     MaterialCalendar.this.dateSelector.select(j);
 | |
|                     Iterator<OnSelectionChangedListener<S>> it = MaterialCalendar.this.onSelectionChangedListeners.iterator();
 | |
|                     while (it.hasNext()) {
 | |
|                         it.next().onSelectionChanged(MaterialCalendar.this.dateSelector.getSelection());
 | |
|                     }
 | |
|                     MaterialCalendar.this.recyclerView.getAdapter().notifyDataSetChanged();
 | |
|                     if (MaterialCalendar.this.yearSelector != null) {
 | |
|                         MaterialCalendar.this.yearSelector.getAdapter().notifyDataSetChanged();
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|         this.recyclerView.setAdapter(monthsPagerAdapter);
 | |
|         int integer = contextThemeWrapper.getResources().getInteger(R.integer.mtrl_calendar_year_selector_span);
 | |
|         RecyclerView recyclerView = (RecyclerView) inflate.findViewById(R.id.mtrl_calendar_year_selector_frame);
 | |
|         this.yearSelector = recyclerView;
 | |
|         if (recyclerView != null) {
 | |
|             recyclerView.setHasFixedSize(true);
 | |
|             this.yearSelector.setLayoutManager(new GridLayoutManager((Context) contextThemeWrapper, integer, 1, false));
 | |
|             this.yearSelector.setAdapter(new YearGridAdapter(this));
 | |
|             this.yearSelector.addItemDecoration(createItemDecoration());
 | |
|         }
 | |
|         if (inflate.findViewById(R.id.month_navigation_fragment_toggle) != null) {
 | |
|             addActionsToMonthNavigation(inflate, monthsPagerAdapter);
 | |
|         }
 | |
|         if (!MaterialDatePicker.isFullscreen(contextThemeWrapper)) {
 | |
|             new PagerSnapHelper().attachToRecyclerView(this.recyclerView);
 | |
|         }
 | |
|         this.recyclerView.scrollToPosition(monthsPagerAdapter.getPosition(this.current));
 | |
|         setUpForAccessibility();
 | |
|         return inflate;
 | |
|     }
 | |
| 
 | |
|     private void setUpForAccessibility() {
 | |
|         ViewCompat.setAccessibilityDelegate(this.recyclerView, new AccessibilityDelegateCompat() { // from class: com.google.android.material.datepicker.MaterialCalendar.4
 | |
|             @Override // androidx.core.view.AccessibilityDelegateCompat
 | |
|             public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
 | |
|                 super.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfoCompat);
 | |
|                 accessibilityNodeInfoCompat.setScrollable(false);
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     private RecyclerView.ItemDecoration createItemDecoration() {
 | |
|         return new RecyclerView.ItemDecoration() { // from class: com.google.android.material.datepicker.MaterialCalendar.5
 | |
|             private final Calendar startItem = UtcDates.getUtcCalendar();
 | |
|             private final Calendar endItem = UtcDates.getUtcCalendar();
 | |
| 
 | |
|             @Override // androidx.recyclerview.widget.RecyclerView.ItemDecoration
 | |
|             public void onDraw(Canvas canvas, RecyclerView recyclerView, RecyclerView.State state) {
 | |
|                 int width;
 | |
|                 if ((recyclerView.getAdapter() instanceof YearGridAdapter) && (recyclerView.getLayoutManager() instanceof GridLayoutManager)) {
 | |
|                     YearGridAdapter yearGridAdapter = (YearGridAdapter) recyclerView.getAdapter();
 | |
|                     GridLayoutManager gridLayoutManager = (GridLayoutManager) recyclerView.getLayoutManager();
 | |
|                     for (Pair<Long, Long> pair : MaterialCalendar.this.dateSelector.getSelectedRanges()) {
 | |
|                         if (pair.first != null && pair.second != null) {
 | |
|                             this.startItem.setTimeInMillis(pair.first.longValue());
 | |
|                             this.endItem.setTimeInMillis(pair.second.longValue());
 | |
|                             int positionForYear = yearGridAdapter.getPositionForYear(this.startItem.get(1));
 | |
|                             int positionForYear2 = yearGridAdapter.getPositionForYear(this.endItem.get(1));
 | |
|                             View findViewByPosition = gridLayoutManager.findViewByPosition(positionForYear);
 | |
|                             View findViewByPosition2 = gridLayoutManager.findViewByPosition(positionForYear2);
 | |
|                             int spanCount = positionForYear / gridLayoutManager.getSpanCount();
 | |
|                             int spanCount2 = positionForYear2 / gridLayoutManager.getSpanCount();
 | |
|                             int i = spanCount;
 | |
|                             while (i <= spanCount2) {
 | |
|                                 View findViewByPosition3 = gridLayoutManager.findViewByPosition(gridLayoutManager.getSpanCount() * i);
 | |
|                                 if (findViewByPosition3 != null) {
 | |
|                                     int top = findViewByPosition3.getTop() + MaterialCalendar.this.calendarStyle.year.getTopInset();
 | |
|                                     int bottom = findViewByPosition3.getBottom() - MaterialCalendar.this.calendarStyle.year.getBottomInset();
 | |
|                                     int left = (i != spanCount || findViewByPosition == null) ? 0 : findViewByPosition.getLeft() + (findViewByPosition.getWidth() / 2);
 | |
|                                     if (i == spanCount2 && findViewByPosition2 != null) {
 | |
|                                         width = findViewByPosition2.getLeft() + (findViewByPosition2.getWidth() / 2);
 | |
|                                     } else {
 | |
|                                         width = recyclerView.getWidth();
 | |
|                                     }
 | |
|                                     canvas.drawRect(left, top, width, bottom, MaterialCalendar.this.calendarStyle.rangeFill);
 | |
|                                 }
 | |
|                                 i++;
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     void setCurrentMonth(Month month) {
 | |
|         MonthsPagerAdapter monthsPagerAdapter = (MonthsPagerAdapter) this.recyclerView.getAdapter();
 | |
|         int position = monthsPagerAdapter.getPosition(month);
 | |
|         int position2 = position - monthsPagerAdapter.getPosition(this.current);
 | |
|         boolean z = Math.abs(position2) > 3;
 | |
|         boolean z2 = position2 > 0;
 | |
|         this.current = month;
 | |
|         if (z && z2) {
 | |
|             this.recyclerView.scrollToPosition(position - 3);
 | |
|             postSmoothRecyclerViewScroll(position);
 | |
|         } else if (z) {
 | |
|             this.recyclerView.scrollToPosition(position + 3);
 | |
|             postSmoothRecyclerViewScroll(position);
 | |
|         } else {
 | |
|             postSmoothRecyclerViewScroll(position);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     static int getDayHeight(Context context) {
 | |
|         return context.getResources().getDimensionPixelSize(R.dimen.mtrl_calendar_day_height);
 | |
|     }
 | |
| 
 | |
|     void setSelector(CalendarSelector calendarSelector) {
 | |
|         this.calendarSelector = calendarSelector;
 | |
|         if (calendarSelector == CalendarSelector.YEAR) {
 | |
|             this.yearSelector.getLayoutManager().scrollToPosition(((YearGridAdapter) this.yearSelector.getAdapter()).getPositionForYear(this.current.year));
 | |
|             this.yearFrame.setVisibility(0);
 | |
|             this.dayFrame.setVisibility(8);
 | |
|             this.monthPrev.setVisibility(8);
 | |
|             this.monthNext.setVisibility(8);
 | |
|             return;
 | |
|         }
 | |
|         if (calendarSelector == CalendarSelector.DAY) {
 | |
|             this.yearFrame.setVisibility(8);
 | |
|             this.dayFrame.setVisibility(0);
 | |
|             this.monthPrev.setVisibility(0);
 | |
|             this.monthNext.setVisibility(0);
 | |
|             setCurrentMonth(this.current);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     void toggleVisibleSelector() {
 | |
|         if (this.calendarSelector == CalendarSelector.YEAR) {
 | |
|             setSelector(CalendarSelector.DAY);
 | |
|         } else if (this.calendarSelector == CalendarSelector.DAY) {
 | |
|             setSelector(CalendarSelector.YEAR);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private void addActionsToMonthNavigation(View view, final MonthsPagerAdapter monthsPagerAdapter) {
 | |
|         final MaterialButton materialButton = (MaterialButton) view.findViewById(R.id.month_navigation_fragment_toggle);
 | |
|         materialButton.setTag(SELECTOR_TOGGLE_TAG);
 | |
|         ViewCompat.setAccessibilityDelegate(materialButton, new AccessibilityDelegateCompat() { // from class: com.google.android.material.datepicker.MaterialCalendar.6
 | |
|             @Override // androidx.core.view.AccessibilityDelegateCompat
 | |
|             public void onInitializeAccessibilityNodeInfo(View view2, AccessibilityNodeInfoCompat accessibilityNodeInfoCompat) {
 | |
|                 String string;
 | |
|                 super.onInitializeAccessibilityNodeInfo(view2, accessibilityNodeInfoCompat);
 | |
|                 if (MaterialCalendar.this.dayFrame.getVisibility() == 0) {
 | |
|                     string = MaterialCalendar.this.getString(R.string.mtrl_picker_toggle_to_year_selection);
 | |
|                 } else {
 | |
|                     string = MaterialCalendar.this.getString(R.string.mtrl_picker_toggle_to_day_selection);
 | |
|                 }
 | |
|                 accessibilityNodeInfoCompat.setHintText(string);
 | |
|             }
 | |
|         });
 | |
|         View findViewById = view.findViewById(R.id.month_navigation_previous);
 | |
|         this.monthPrev = findViewById;
 | |
|         findViewById.setTag(NAVIGATION_PREV_TAG);
 | |
|         View findViewById2 = view.findViewById(R.id.month_navigation_next);
 | |
|         this.monthNext = findViewById2;
 | |
|         findViewById2.setTag(NAVIGATION_NEXT_TAG);
 | |
|         this.yearFrame = view.findViewById(R.id.mtrl_calendar_year_selector_frame);
 | |
|         this.dayFrame = view.findViewById(R.id.mtrl_calendar_day_selector_frame);
 | |
|         setSelector(CalendarSelector.DAY);
 | |
|         materialButton.setText(this.current.getLongName());
 | |
|         this.recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { // from class: com.google.android.material.datepicker.MaterialCalendar.7
 | |
|             @Override // androidx.recyclerview.widget.RecyclerView.OnScrollListener
 | |
|             public void onScrolled(RecyclerView recyclerView, int i, int i2) {
 | |
|                 int findLastVisibleItemPosition;
 | |
|                 if (i < 0) {
 | |
|                     findLastVisibleItemPosition = MaterialCalendar.this.getLayoutManager().findFirstVisibleItemPosition();
 | |
|                 } else {
 | |
|                     findLastVisibleItemPosition = MaterialCalendar.this.getLayoutManager().findLastVisibleItemPosition();
 | |
|                 }
 | |
|                 MaterialCalendar.this.current = monthsPagerAdapter.getPageMonth(findLastVisibleItemPosition);
 | |
|                 materialButton.setText(monthsPagerAdapter.getPageTitle(findLastVisibleItemPosition));
 | |
|             }
 | |
| 
 | |
|             @Override // androidx.recyclerview.widget.RecyclerView.OnScrollListener
 | |
|             public void onScrollStateChanged(RecyclerView recyclerView, int i) {
 | |
|                 if (i == 0) {
 | |
|                     recyclerView.announceForAccessibility(materialButton.getText());
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|         materialButton.setOnClickListener(new View.OnClickListener() { // from class: com.google.android.material.datepicker.MaterialCalendar.8
 | |
|             @Override // android.view.View.OnClickListener
 | |
|             public void onClick(View view2) {
 | |
|                 MaterialCalendar.this.toggleVisibleSelector();
 | |
|             }
 | |
|         });
 | |
|         this.monthNext.setOnClickListener(new View.OnClickListener() { // from class: com.google.android.material.datepicker.MaterialCalendar.9
 | |
|             @Override // android.view.View.OnClickListener
 | |
|             public void onClick(View view2) {
 | |
|                 int findFirstVisibleItemPosition = MaterialCalendar.this.getLayoutManager().findFirstVisibleItemPosition() + 1;
 | |
|                 if (findFirstVisibleItemPosition < MaterialCalendar.this.recyclerView.getAdapter().getItemCount()) {
 | |
|                     MaterialCalendar.this.setCurrentMonth(monthsPagerAdapter.getPageMonth(findFirstVisibleItemPosition));
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|         this.monthPrev.setOnClickListener(new View.OnClickListener() { // from class: com.google.android.material.datepicker.MaterialCalendar.10
 | |
|             @Override // android.view.View.OnClickListener
 | |
|             public void onClick(View view2) {
 | |
|                 int findLastVisibleItemPosition = MaterialCalendar.this.getLayoutManager().findLastVisibleItemPosition() - 1;
 | |
|                 if (findLastVisibleItemPosition >= 0) {
 | |
|                     MaterialCalendar.this.setCurrentMonth(monthsPagerAdapter.getPageMonth(findLastVisibleItemPosition));
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     private void postSmoothRecyclerViewScroll(final int i) {
 | |
|         this.recyclerView.post(new Runnable() { // from class: com.google.android.material.datepicker.MaterialCalendar.11
 | |
|             @Override // java.lang.Runnable
 | |
|             public void run() {
 | |
|                 MaterialCalendar.this.recyclerView.smoothScrollToPosition(i);
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     private static int getDialogPickerHeight(Context context) {
 | |
|         Resources resources = context.getResources();
 | |
|         return resources.getDimensionPixelSize(R.dimen.mtrl_calendar_navigation_height) + resources.getDimensionPixelOffset(R.dimen.mtrl_calendar_navigation_top_padding) + resources.getDimensionPixelOffset(R.dimen.mtrl_calendar_navigation_bottom_padding) + resources.getDimensionPixelSize(R.dimen.mtrl_calendar_days_of_week_height) + (MonthAdapter.MAXIMUM_WEEKS * resources.getDimensionPixelSize(R.dimen.mtrl_calendar_day_height)) + ((MonthAdapter.MAXIMUM_WEEKS - 1) * resources.getDimensionPixelOffset(R.dimen.mtrl_calendar_month_vertical_padding)) + resources.getDimensionPixelOffset(R.dimen.mtrl_calendar_bottom_padding);
 | |
|     }
 | |
| 
 | |
|     LinearLayoutManager getLayoutManager() {
 | |
|         return (LinearLayoutManager) this.recyclerView.getLayoutManager();
 | |
|     }
 | |
| 
 | |
|     @Override // com.google.android.material.datepicker.PickerFragment
 | |
|     public boolean addOnSelectionChangedListener(OnSelectionChangedListener<S> onSelectionChangedListener) {
 | |
|         return super.addOnSelectionChangedListener(onSelectionChangedListener);
 | |
|     }
 | |
| }
 |