I already am using a GestureDetector... For some reason I couldn't get it to
not show the context menu on long press... But I was using
setOnCreateContextMenuListener().

I'll go ahead and give what you suggest a try.  I wasn't sure it would work
because registerForContextMenu() says it sets the
onCreateContextMenuListener() and thought I would have the same problem.

Thanks,
Justin Anderson
MagouyaWare Developer
http://sites.google.com/site/magouyaware


On Wed, May 4, 2011 at 7:45 AM, Emanuel Moecklin <[email protected]>wrote:

> You can use a GestureDetector to listen to motion events one of them
> being onLongPress(MotionEvent e).
> In that method you decide whether you want to show the context menu or
> not. If you decide to show it call activity.openContextMenu(myView);
> (registerForContextMenu (View view) needs to be called before that).
> This way it won't open on a long-press unless you want it to. You can
> use the other GestureListener events to show the context menu e.g. for
> double taps.
>
> Here's some sample code:
>
>        gestureDetector = new GestureDetector(activity, gestureListener);
>        gestureDetector.setIsLongpressEnabled(true);
>
>        private GestureDetector.SimpleOnGestureListener gestureListener =
> new
> GestureDetector.SimpleOnGestureListener() {
>
>                @Override
>                public boolean onSingleTapUp(MotionEvent event) {
>                        // do something
>                        return true;
>                }
>
>                @Override
>                public boolean onDown(MotionEvent event) {
>                        // do something
>                        return true;
>                }
>
>                @Override
>                public void onLongPress(MotionEvent event) {
>                        if (want2ShowContextMenu) {
>                                activity.openContextMenu(myView.this);
>                        }
>                }
>
>                @Override
>                public boolean onDoubleTap(MotionEvent event) {
>                        // do something
>                        return true;
>                }
>
>        };
>
> BTW this is code I use in one of my apps and suppressing the context
> menu works perfectly.
>
> Emanuel Moecklin
> 1gravity LLC
>
> On May 3, 5:21 pm, Justin Anderson <[email protected]> wrote:
> > *> So you only want it to call the context menu when you call it, not on
> > long press?*
> >
> > Exactly.  But that is only because I have several other actions that can
> be
> > customized by the user... It kind of seems like it would feel unfinished
> if
> > the user could customize what happens for short press, double press,
> swipe
> > up, and swipe down but not long press...
> >
> > Though the more I think about it the more I'm thinking it's not worth
> it...
> >  The default Context Menu behavior would be long-press anyway and I don't
> > know how many people would actually change its behavior were the option
> > there.
> >
> > *> If that's the case, could you add a long press listener and
> purposefully
> > eat it so it doesn't trigger the context menu? No idea if that would work
> > and would be hacky but ...*
> > *
> > *
> > Yeah I'm not sure if it would work or not either and it does seem
> hackish...
> >  I'm thinking I'm just going to leave it as it is unless I get a lot of
> user
> > requests to add customization of the context menu as well.
> >
> > Thanks,
> > Justin Anderson
> > MagouyaWare Developerhttp://sites.google.com/site/magouyaware
> >
> >
> >
> >
> >
> >
> >
> > On Tue, May 3, 2011 at 2:17 PM, TreKing <[email protected]> wrote:
> > > On Tue, May 3, 2011 at 3:03 PM, Justin Anderson <[email protected]
> >wrote:
> >
> > >> And as I stated before, if you
> useView.setOnCreateContextMenuListener()
> > >> then it sets up your view to show the context menu on with a
> long-press...
> > >>  And I'm back to square one.
> >
> > > Yeah, I would expect that, as it's the default behavior. So you only
> want
> > > it to call the context menu when you call it, not on long press?
> > > If that's the case, could you add a long press listener and
> purposefully
> > > eat it so it doesn't trigger the context menu? No idea if that would
> work
> > > and would be hacky but ...
> >
> > >
> ---------------------------------------------------------------------------
> ----------------------
> > > TreKing <http://sites.google.com/site/rezmobileapps/treking> - Chicago
> > > transit tracking app for Android-powered devices
> >
> > >  --
> > > You received this message because you are subscribed to the Google
> > > Groups "Android Developers" group.
> > > To post to this group, send email to
> [email protected]
> > > To unsubscribe from this group, send email to
> > > [email protected]
> > > For more options, visit this group at
> > >http://groups.google.com/group/android-developers?hl=en
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to