diff --git a/lib/java/com/google/android/material/timepicker/MaterialTimePicker.java b/lib/java/com/google/android/material/timepicker/MaterialTimePicker.java index f1cfb7cba59..45e76081780 100644 --- a/lib/java/com/google/android/material/timepicker/MaterialTimePicker.java +++ b/lib/java/com/google/android/material/timepicker/MaterialTimePicker.java @@ -92,6 +92,7 @@ public final class MaterialTimePicker extends DialogFragment { static final String OVERRIDE_THEME_RES_ID = "TIME_PICKER_OVERRIDE_THEME_RES_ID"; private MaterialButton modeButton; + private Button cancelButton; @InputMode private int inputMode = INPUT_MODE_CLOCK; @@ -246,7 +247,7 @@ public void onClick(View v) { } }); - Button cancelButton = root.findViewById(R.id.material_timepicker_cancel_button); + cancelButton = root.findViewById(R.id.material_timepicker_cancel_button); cancelButton.setOnClickListener( new OnClickListener() { @Override @@ -257,6 +258,7 @@ public void onClick(View v) { dismiss(); } }); + updateCancelButtonVisibility(); modeButton.setOnClickListener( new OnClickListener() { @@ -296,6 +298,12 @@ public final void onDismiss(@NonNull DialogInterface dialogInterface) { super.onDismiss(dialogInterface); } + @Override + public void setCancelable(boolean cancelable) { + super.setCancelable(cancelable); + updateCancelButtonVisibility(); + } + private void updateInputMode(MaterialButton modeButton) { if (activePresenter != null) { activePresenter.hide(); @@ -309,6 +317,12 @@ private void updateInputMode(MaterialButton modeButton) { modeButton.setContentDescription(getResources().getString(buttonData.second)); } + private void updateCancelButtonVisibility() { + if (cancelButton != null) { + cancelButton.setVisibility(isCancelable() ? View.VISIBLE : View.GONE); + } + } + private TimePickerPresenter initializeOrRetrieveActivePresenterForMode(int mode) { if (mode == INPUT_MODE_CLOCK) { timePickerClockPresenter =