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" />