Resolve pointer icon over FastScroller to arrow.

Currently the icon defined by the host AbsListView is displayed
over the fast scroll area.

Bug: 35424111
Test: manual
Change-Id: Ia9897a44550922f16573b97337841c3f6ae263da
This commit is contained in:
Vladislav Kaznacheev
2017-02-16 09:37:56 -08:00
parent d0e1022237
commit 11372fa466
2 changed files with 20 additions and 0 deletions

View File

@@ -54,6 +54,7 @@ import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.PointerIcon;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
@@ -4401,6 +4402,17 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
return super.onInterceptHoverEvent(event);
}
@Override
public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) {
if (mFastScroll != null) {
PointerIcon pointerIcon = mFastScroll.onResolvePointerIcon(event, pointerIndex);
if (pointerIcon != null) {
return pointerIcon;
}
}
return super.onResolvePointerIcon(event, pointerIndex);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final int actionMasked = ev.getActionMasked();

View File

@@ -38,6 +38,7 @@ import android.util.Property;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.PointerIcon;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.ViewConfiguration;
@@ -1441,6 +1442,13 @@ class FastScroller {
return false;
}
public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) {
if (mState == STATE_DRAGGING || isPointInside(event.getX(), event.getY())) {
return PointerIcon.getSystemIcon(mList.getContext(), PointerIcon.TYPE_ARROW);
}
return null;
}
public boolean onTouchEvent(MotionEvent me) {
if (!isEnabled()) {
return false;