如何使 ViewPager 从父视图滚动?
How to make ViewPager scrollable from the parent view?
我正在实现如下所示的应用程序教程。
我做了一个又漂亮又小的 ViewPager
并把它放在模型上 ImageView
。问题是当我尝试从其他地方滚动时 ViewPager
没有滚动,比如在视图寻呼机指示器周围。这很自然,因为 ViewPager
无法监听自身之外的触摸事件。
- 当我尝试从其他地方滚动时,如何使
ViewPager
滚动?
我试过 detect touch events 在 ViewPager
的父级上,但我不知道如何将 onFling()
或 onScroll()
关联到 ViewPager
的滚动。
如果有更好的实施这种UI的建议,会是什么?
是否有类似的教程或自定义库?
为外部 ViewPager
设置一个 View.OnTouchListener
并检查内部是否在显示内部 ViewPager
的正确页面上。如果内部 ViewPager
不是第一个或最后一个,你可以将 MotionEvent
分派到第二个 dispatchTouchEvent(MotionEvent me)
outerViewPager.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(outerViewPagerAdapter.isCurrentPageHaveInnerViewPager() &&
! innerViewPagerAdapter.isOnFirstOrLastPage()){
innerViewPagerAdapter.dispatchTouchEvent(event);
return true;
}
return super.onTouch(event); //outer will get touch events
}
});
如果需要,您也可以在派遣前调整 x/y 事件中的触摸线
我正在实现如下所示的应用程序教程。
我做了一个又漂亮又小的 ViewPager
并把它放在模型上 ImageView
。问题是当我尝试从其他地方滚动时 ViewPager
没有滚动,比如在视图寻呼机指示器周围。这很自然,因为 ViewPager
无法监听自身之外的触摸事件。
- 当我尝试从其他地方滚动时,如何使
ViewPager
滚动?
我试过 detect touch events 在 ViewPager
的父级上,但我不知道如何将 onFling()
或 onScroll()
关联到 ViewPager
的滚动。
如果有更好的实施这种UI的建议,会是什么?
是否有类似的教程或自定义库?
为外部 ViewPager
设置一个 View.OnTouchListener
并检查内部是否在显示内部 ViewPager
的正确页面上。如果内部 ViewPager
不是第一个或最后一个,你可以将 MotionEvent
分派到第二个 dispatchTouchEvent(MotionEvent me)
outerViewPager.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(outerViewPagerAdapter.isCurrentPageHaveInnerViewPager() &&
! innerViewPagerAdapter.isOnFirstOrLastPage()){
innerViewPagerAdapter.dispatchTouchEvent(event);
return true;
}
return super.onTouch(event); //outer will get touch events
}
});
如果需要,您也可以在派遣前调整 x/y 事件中的触摸线