0

私は次の質問に従っています:ギャラリー ウィジェットでスクロールを停止するにはどうすればよいですか?

カスタムギャラリーを次のように実装しようとしました:

public class CustomGallery : Gallery
    {
        public CustomGallery(Context context, IAttributeSet attrs) :
            base(context, attrs)
        {
            Initialize();
        }

        public CustomGallery(Context context, IAttributeSet attrs, int defStyle) :
            base(context, attrs, defStyle)
        {
            Initialize();
        }

        private void Initialize()
        {
        }

        public override bool OnFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
        {
            Keycode kEvent;
            if (isScrollingLeft(e1, e2))
            { //Check if scrolling left
                kEvent = Keycode.DpadLeft;
            }
            else
            { //Otherwise scrolling right
                kEvent = Keycode.DpadRight;
            }

            OnKeyDown(kEvent, null);

            return true;
        }

        private bool isScrollingLeft(MotionEvent e1, MotionEvent e2)
        {
            return e2.GetX() > e1.GetX();


        }
    }

レイアウトでカスタム ギャラリーを参照し、最初の画像が表示されますが、次の画像にスクロールしようとしても何も起こりません。

奇妙なことに、OnFling のオーバーライドを削除しても、ギャラリーでスクロールできませんか? 何もオーバーライドしなければ、カスタム コンポーネントは通常のギャラリー コンポーネントのように動作するはずです。

PS: 私がやろうとしているのは、左または右にスワイプしたときにギャラリーが複数の画像をスクロールしないようにすることだけです。一度に 1 つの画像をスクロールしたいのです。

どんな助けでも大歓迎です!

4

1 に答える 1

0

この投稿をスクラッチして、アクティビティで OnTouch イベントを監視していたことに気づきました ><

于 2012-09-20T09:54:23.037 に答える