diff --git a/lib/java/com/google/android/material/timepicker/ClockFaceView.java b/lib/java/com/google/android/material/timepicker/ClockFaceView.java
index 3cc513d39..11c9f7d17 100644
--- a/lib/java/com/google/android/material/timepicker/ClockFaceView.java
+++ b/lib/java/com/google/android/material/timepicker/ClockFaceView.java
@@ -38,6 +38,7 @@ import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionIn
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat;
import androidx.appcompat.content.res.AppCompatResources;
import android.util.AttributeSet;
+import android.util.DisplayMetrics;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
@@ -74,6 +75,9 @@ class ClockFaceView extends RadialViewGroup implements OnRotateListener {
private final int[] gradientColors;
private final float[] gradientPositions = new float[] {0f, 0.9f, 1f};
private final int clockHandPadding;
+ private final int minimumHeight;
+ private final int minimumWidth;
+ private final int clockSize;
private String[] values;
@@ -167,6 +171,10 @@ class ClockFaceView extends RadialViewGroup implements OnRotateListener {
String[] initialValues = new String[INITIAL_CAPACITY];
Arrays.fill(initialValues, VALUE_PLACEHOLDER);
setValues(initialValues, /* contentDescription= */ 0);
+
+ minimumHeight = res.getDimensionPixelSize(R.dimen.material_time_picker_minimum_screen_height);
+ minimumWidth = res.getDimensionPixelSize(R.dimen.material_time_picker_minimum_screen_width);
+ clockSize = res.getDimensionPixelSize(R.dimen.material_clock_size);
}
/**
@@ -278,4 +286,25 @@ class ClockFaceView extends RadialViewGroup implements OnRotateListener {
findIntersectingTextView();
}
}
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ Resources r = getResources();
+ DisplayMetrics displayMetrics = r.getDisplayMetrics();
+
+ float height = displayMetrics.heightPixels;
+ float width = displayMetrics.widthPixels;
+
+ // If the screen is smaller than our defined values. Scale the clock face
+ // proportionally to the smaller size
+ int size = (int) (clockSize / max3(minimumHeight / height, minimumWidth / width, 1f));
+
+ int spec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
+ setMeasuredDimension(size, size);
+ super.onMeasure(spec, spec);
+ }
+
+ private static float max3(float a, float b, float c) {
+ return max(max(a, b), c);
+ }
}
diff --git a/lib/java/com/google/android/material/timepicker/res/layout-land/material_timepicker.xml b/lib/java/com/google/android/material/timepicker/res/layout-land/material_timepicker.xml
index 2124915df..f703571aa 100644
--- a/lib/java/com/google/android/material/timepicker/res/layout-land/material_timepicker.xml
+++ b/lib/java/com/google/android/material/timepicker/res/layout-land/material_timepicker.xml
@@ -52,8 +52,8 @@
diff --git a/lib/java/com/google/android/material/timepicker/res/layout/material_timepicker.xml b/lib/java/com/google/android/material/timepicker/res/layout/material_timepicker.xml
index 86a21744d..d056a6edf 100644
--- a/lib/java/com/google/android/material/timepicker/res/layout/material_timepicker.xml
+++ b/lib/java/com/google/android/material/timepicker/res/layout/material_timepicker.xml
@@ -30,8 +30,8 @@
- 210dp
8dp
diff --git a/lib/java/com/google/android/material/timepicker/res/values-h550dp-port/dimens.xml b/lib/java/com/google/android/material/timepicker/res/values-h550dp-port/dimens.xml
index 3c5206fc3..30610cfba 100644
--- a/lib/java/com/google/android/material/timepicker/res/values-h550dp-port/dimens.xml
+++ b/lib/java/com/google/android/material/timepicker/res/values-h550dp-port/dimens.xml
@@ -16,6 +16,5 @@
-->
- 230dp
24dp
diff --git a/lib/java/com/google/android/material/timepicker/res/values-h600dp-port/dimens.xml b/lib/java/com/google/android/material/timepicker/res/values-land/dimens.xml
similarity index 76%
rename from lib/java/com/google/android/material/timepicker/res/values-h600dp-port/dimens.xml
rename to lib/java/com/google/android/material/timepicker/res/values-land/dimens.xml
index 457e5c353..21ac6accd 100644
--- a/lib/java/com/google/android/material/timepicker/res/values-h600dp-port/dimens.xml
+++ b/lib/java/com/google/android/material/timepicker/res/values-land/dimens.xml
@@ -1,6 +1,6 @@
-
- 256dp
+
+ 450dp
+ 600dp
+
diff --git a/lib/java/com/google/android/material/timepicker/res/values-w320dp-land/dimens.xml b/lib/java/com/google/android/material/timepicker/res/values-w320dp-land/dimens.xml
index eb48df34e..a9d5e50bb 100644
--- a/lib/java/com/google/android/material/timepicker/res/values-w320dp-land/dimens.xml
+++ b/lib/java/com/google/android/material/timepicker/res/values-w320dp-land/dimens.xml
@@ -16,7 +16,6 @@
-->
- 170dp
24dp
36dp
diff --git a/lib/java/com/google/android/material/timepicker/res/values-w550dp-land/dimens.xml b/lib/java/com/google/android/material/timepicker/res/values-w550dp-land/dimens.xml
deleted file mode 100644
index c16385b63..000000000
--- a/lib/java/com/google/android/material/timepicker/res/values-w550dp-land/dimens.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- 200dp
-
diff --git a/lib/java/com/google/android/material/timepicker/res/values-w600dp-land/dimens.xml b/lib/java/com/google/android/material/timepicker/res/values-w600dp-land/dimens.xml
index c956ede12..59d29cc25 100644
--- a/lib/java/com/google/android/material/timepicker/res/values-w600dp-land/dimens.xml
+++ b/lib/java/com/google/android/material/timepicker/res/values-w600dp-land/dimens.xml
@@ -16,6 +16,5 @@
-->
- 240dp
64dp
diff --git a/lib/java/com/google/android/material/timepicker/res/values/dimens.xml b/lib/java/com/google/android/material/timepicker/res/values/dimens.xml
index 6773ac459..a3ab6080d 100644
--- a/lib/java/com/google/android/material/timepicker/res/values/dimens.xml
+++ b/lib/java/com/google/android/material/timepicker/res/values/dimens.xml
@@ -21,7 +21,6 @@
52dp
12dp
44dp
- 256dp
64dp
24dp
2dp
@@ -35,4 +34,8 @@
-12dp
2dp
+ 256dp
+
+ 560dp
+ 340dp