3

質問のリストとラジオグループのそれぞれの選択肢の間で水平にスワイプする必要があります。次のようなさまざまな選択肢があることを読みました: 1-ジェスチャー検出器 2- ViewPage 3- ViewPage with Fragments

ViewPage を試してみましたが、後ろにスワイプする方法と、ユーザーがどの選択をチェックしたかを示す方法について、さまざまな問題に直面しています。前後にスワイプする最も簡単な方法を使用する必要があります (どの選択肢がチェックされているかを示します)

ランタイムまたはコードサイズの両方からそのようなメソッドがより最適化されていると信じているため、たとえば自分でチェック済みの選択肢を保存せずに、可能な限り Andriod メソッドに依存したいと考えています。私が使用できる他のクラスがある場合は、それについて、またはどのクラスが私の目標を達成するのに本当に最適かを教えてください

4

3 に答える 3

1

と一緒に使用ViewPagerFragmentPagerAdapterます。アダプターのアイテムは、同じフラグメントの異なるインスタンスになります。各フラグメントには、静的な質問テキストと、質問に対する可能な回答のラジオ グループが含まれます。 ViewPager次に、そのようなフラグメントを別のフラグメントに置き換えるスワイプを処理します。

于 2012-11-15T14:24:20.767 に答える
0

そのようなメソッドSimpleOnGestureListenerを持つ拡張クラスを作成するジェスチャ検出器を簡単に使用できます。onFling

protected class ExampleGestureDetector extends SimpleOnGestureListener {
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

        if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) {// User swipe vertically
        }
        if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_MIN_VELOCITY) {// Right swipe
        } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_MIN_VELOCITY) {// Left swipe
        }
        return false;
    }

}

必要に応じて変数を定義するだけで、次のようにgestureDetectorを作成できます

gestureDetector = new GestureDetector(new ExampleGestureDetector());

必要なビューのタッチリスナーを再定義します

view.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View wv, MotionEvent event) {
                return gestureDetector.onTouchEvent(event);
            }
        });

編集:テストした後、スクロール可能なアイテムでのみ機能するようです。

于 2012-11-15T14:48:28.597 に答える
0

このライブラリを強くお勧めします:

ViewPagerIndicator by Jake Warton

非常にカスタマイズ可能です。

于 2012-11-15T14:37:49.113 に答える