【发布时间】:2014-05-27 12:51:09
【问题描述】:
我在 ViewPager 中放置了一个水平滚动视图。目标是仅使用软件触发的水平滚动视图滚动。所有滚动手势都应由视图寻呼机处理。
我已经通过创建一个拦截所有滑动手势的自定义 View Pager 来做到这一点:
public class GreedyViewPager extends ViewPager {
GestureDetector mGestureDetector;
View.OnTouchListener mGestureListener;
public GreedyViewPager(Context context) {
super(context);
initGestureDetector(context);
}
public GreedyViewPager(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
initGestureDetector(context);
}
void initGestureDetector(Context context){
mGestureDetector = new GestureDetector(context, new ScrollDetector());
ViewConfiguration vc = ViewConfiguration.get(context);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev) || mGestureDetector.onTouchEvent(ev);
}
class ScrollDetector extends SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
return true;
}
}
}
不幸的是,它不适用于所有设备,有时我必须滑动几次才能转到 ViewPager 中的下一个位置。
知道如何让它变得更好吗?
【问题讨论】:
-
@Pragna 我想做相反的事情,这个解决方案锁定 ViewPager ,我不想让 ViewPager 拦截所有滚动事件
-
试试这个 viewPager.setDescendantFocusability(ViewPager.FOCUS_BEFORE_DESCENDANTS);
-
@kmalmur 你能解决这个问题吗?我今天面临同样的问题,focus_before_descendants 不起作用
标签: android android-layout android-viewpager android-view