1

我花了好几个小时试图在我的 viewpager 中获得一个正常工作的响应式 mapview 片段,现在它终于可以工作了,我不太清楚为什么!

背景:我正在使用 ActionBarSherlock 作为我的操作栏,我正在使用 viewpager 在三个片段之间切换:列表、imageview + textview 和 mapview。我有一个 viewpagerindicator 可以和我的 viewpager 一起使用。我正在使用 android-support-v4 的地图版本。

工作原理: - 覆盖 viewpager 的 onInterceptTouchEvent 方法以返回 false - 在 mapview 上设置一个不执行任何操作的 onClickListener。

mapview 会出现,但在我添加监听器之前不会响应,但为什么添加 onclicklistener 会使所有手势都响应?

4

1 回答 1

2

也许你应该重新开始。就我而言,我所要做的就是将 MapFragment 与 FragmentPageAdapter 一起放入 ViewPager。然后用重写的方法创建了我自己的 ViewPager,只是为了使 MapFragment 可用:

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    // hacky hack to never intercept map pages events unless its on the
    // very edge of screen - last or first fifth of the view size
    if (((FragmentPagerAdapter) getAdapter()).getItem(getCurrentItem()) instanceof SupportMapFragment) {
        if (event.getAction() == MotionEvent.ACTION_DOWN && event.getX() < (getWidth() - (getWidth() / 5)) && event.getX() > (getWidth() / 5)) {
            // Never allow swiping to switch if not right on the edge
            return false;
        }
    }
    return super.onInterceptTouchEvent(event);
}
于 2012-12-12T13:45:22.517 回答