我有一个带嵌套viewpage的应用。顶级viewpager是选项卡布局的ViewGroup,子寻呼机只刷一些图像。
我想要实现的是内部ViewPager完全将触摸事件委托给父视图寻呼者。我只想用按钮滚动它的内容。
为此,我为内部ViewPagers创建了一个子类:
public class NonTouchViewPager extends ViewPager {
public NonTouchViewPager(Context context) {
super(context);
}
public NonTouchViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return false;
}
}
但是如果内部ViewPager位于其中一个边缘,它只会委托触摸事件。 因此,如果ViewPager在左侧,我可以将父寻呼机向左滑动,如果内部寻呼机在右侧,我可以向右滑动父设备。在任何其他情况下,触摸事件仅被消耗,并且不会移动父项。
如何将触摸事件始终委托给父视图提交者?
提前致谢, 麦克法兰
答案 0 :(得分:3)
我知道这是旧的,但我找到了解决方案。这比我想象的要简单。
public class NonSwipeableViewPager extends ViewPager {
public NonSwipeableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean canScrollHorizontally(int direction) {
return false;
}
}