Working around overscroll issues in AllApps.

- For the time being, we are going to do custom drawing to ensure that we get the touch
  events in the right order, while still allowing the recycler view to draw the overscroll
  effect on top of the prediction bar.

Bug: 21335369
Change-Id: I6bf64e5c1e9aa634a953223a5decf74942e4fb57
This commit is contained in:
Winson Chung
2015-06-22 19:48:07 -07:00
parent 01d4ffdef4
commit 243fdd7cdf
6 changed files with 79 additions and 2 deletions
@@ -16,10 +16,12 @@
package com.android.launcher3.allapps;
import android.content.Context;
import android.graphics.Canvas;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.ContextThemeWrapper;
import android.view.View;
import com.android.launcher3.BaseRecyclerView;
import com.android.launcher3.BaseRecyclerViewFastScrollBar;
@@ -70,8 +72,9 @@ public class AllAppsRecyclerView extends BaseRecyclerView
public AllAppsRecyclerView(Context context, AttributeSet attrs, int defStyleAttr,
int defStyleRes) {
super(context, attrs, defStyleAttr);
mLauncher = (Launcher) context;
setOverScrollMode(View.OVER_SCROLL_NEVER);
// We have a theme on this view, so we need to coerce the base activity context from that
ContextThemeWrapper ctx = (ContextThemeWrapper) context;
mLauncher = (Launcher) ctx.getBaseContext();
}
/**
@@ -125,6 +128,18 @@ public class AllAppsRecyclerView extends BaseRecyclerView
return 0;
}
/**
* We need to override the draw to ensure that we don't draw the overscroll effect beyond the
* background bounds.
*/
@Override
protected void dispatchDraw(Canvas canvas) {
canvas.clipRect(mBackgroundPadding.left, mBackgroundPadding.top,
getWidth() - mBackgroundPadding.right,
getHeight() - mBackgroundPadding.bottom);
super.dispatchDraw(canvas);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();