1

ビューページャーで機能し、レスポンシブなmapviewフラグメントを機能させるためにとんでもない時間を費やしましたが、ついに機能するようになったので、理由はよくわかりません。

背景:アクションバーにActionBarSherlockを使用しています。ビューページャーを使用して、リスト、imageview + textview、およびmapviewの3つのフラグメントを切り替えています。ビューページャーと一緒に使用するビューページリンディケーターがあります。android-support-v4のマップバージョンを使用しています。

動作内容:-ビューページャーのonInterceptTouchEventメソッドをオーバーライドしてfalseを返します-何もしないマップビューにonClickListenerを設定します。

マップビューは表示されますが、リスナーを追加する前は応答しませんでしたが、onclicklistenerを追加すると、すべてのジェスチャが応答するようになったのはなぜですか?

4

1 に答える 1

2

たぶん、あなたはもう一度始めるべきです。私の場合、FragmentPageAdapter を使用して MapFragment を ViewPager に配置するだけで済みました。次に、MapFragment を使用可能にするためだけに、オーバーライドされたメソッドを使用して独自の ViewPager を作成しました。

@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 に答える