1
我有2行3列的GridViewPager。作爲其默認行爲如果你在任何頁面上向下滑動,它將導航到下一行的第一頁。但我想覆蓋該行爲並停止在第一行第二和第三列向下滑動。Android Wear GridViewPager手勢
我已經嘗試把2行1列GridViewPager和放置一個ViewPager的第一個單元格以及使用1行3列GridViewPager與另一個1列2行GridViewPager在第一個單元格。兩者都有類似的滾動問題。同伴代碼是我用來更改滾動行爲的自定義GridViewPager。
GridViewPager應該只能滑動如下圖。 Swipe Example Image
public class GridViewPagerCustom extends GridViewPager {
private GestureDetector mGestureDetector;
private int px = 0;
private int py = 0;
public int getPy() {
return py;
}
public void setPy(int py) {
this.py = py;
}
public int getPx() {
return selectedPage;
}
public void setPx(int px) {
this.px = px;
}
public GridViewPagerCustom(Context context, AttributeSet attrs) {
super(context, attrs);
mGestureDetector = new GestureDetector(context, new YScrollDetector());
setFadingEdgeLength(0);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
}
// Return false if we're scrolling in the x direction
class YScrollDetector extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return (getPx() == 0 && getPy() == 0) ? Math.abs(distanceY) > Math.abs(distanceX) : false;
}
}
}