diff --git a/core/java/android/widget/RadialTimePickerView.java b/core/java/android/widget/RadialTimePickerView.java
index 6f198e78df8a1..5a0e1f91d0953 100644
--- a/core/java/android/widget/RadialTimePickerView.java
+++ b/core/java/android/widget/RadialTimePickerView.java
@@ -16,6 +16,7 @@
package android.widget;
+import android.view.PointerIcon;
import com.android.internal.R;
import com.android.internal.widget.ExploreByTouchHelper;
@@ -1052,6 +1053,18 @@ public class RadialTimePickerView extends View {
invalidate();
}
+ @Override
+ public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) {
+ if (!isEnabled()) {
+ return null;
+ }
+ final int degrees = getDegreesFromXY(event.getX(), event.getY(), false);
+ if (degrees != -1) {
+ return PointerIcon.getSystemIcon(getContext(), PointerIcon.TYPE_HAND);
+ }
+ return super.onResolvePointerIcon(event, pointerIndex);
+ }
+
private class RadialPickerTouchHelper extends ExploreByTouchHelper {
private final Rect mTempRect = new Rect();
diff --git a/core/java/android/widget/SimpleMonthView.java b/core/java/android/widget/SimpleMonthView.java
index 3a63e28cf0933..8c4378222a77b 100644
--- a/core/java/android/widget/SimpleMonthView.java
+++ b/core/java/android/widget/SimpleMonthView.java
@@ -16,6 +16,7 @@
package android.widget;
+import android.view.PointerIcon;
import com.android.internal.R;
import com.android.internal.widget.ExploreByTouchHelper;
@@ -1025,6 +1026,21 @@ class SimpleMonthView extends View {
return true;
}
+ @Override
+ public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) {
+ if (!isEnabled()) {
+ return null;
+ }
+ // Add 0.5f to event coordinates to match the logic in onTouchEvent.
+ final int x = (int) (event.getX() + 0.5f);
+ final int y = (int) (event.getY() + 0.5f);
+ final int dayUnderPointer = getDayAtLocation(x, y);
+ if (dayUnderPointer >= 0) {
+ return PointerIcon.getSystemIcon(getContext(), PointerIcon.TYPE_HAND);
+ }
+ return super.onResolvePointerIcon(event, pointerIndex);
+ }
+
/**
* Provides a virtual view hierarchy for interfacing with an accessibility
* service.
diff --git a/core/res/res/layout-land/time_picker_material.xml b/core/res/res/layout-land/time_picker_material.xml
index 7a0c38f1c3ff8..70833d6d757eb 100644
--- a/core/res/res/layout-land/time_picker_material.xml
+++ b/core/res/res/layout-land/time_picker_material.xml
@@ -61,6 +61,7 @@
android:ellipsize="none"
android:gravity="right"
android:focusable="true"
+ android:pointerIcon="hand"
android:nextFocusForward="@+id/minutes" />
diff --git a/core/res/res/layout/date_picker_header_material.xml b/core/res/res/layout/date_picker_header_material.xml
index 755317ee28cef..81f08fd9a748d 100644
--- a/core/res/res/layout/date_picker_header_material.xml
+++ b/core/res/res/layout/date_picker_header_material.xml
@@ -45,6 +45,7 @@
android:padding="8dp"
android:background="?attr/selectableItemBackground"
android:textAppearance="@style/TextAppearance.Material.DatePicker.YearLabel"
+ android:pointerIcon="hand"
android:nextFocusForward="@+id/prev" />
diff --git a/core/res/res/layout/time_picker_header_material.xml b/core/res/res/layout/time_picker_header_material.xml
index 8fd87b8219b07..ced17227aa2d7 100644
--- a/core/res/res/layout/time_picker_header_material.xml
+++ b/core/res/res/layout/time_picker_header_material.xml
@@ -38,6 +38,7 @@
android:ellipsize="none"
android:gravity="right"
android:focusable="true"
+ android:pointerIcon="hand"
android:nextFocusForward="@+id/minutes" />