We are designing a commercial app for Android. Part of the solution has a list of items that has a number of context actions. Initially there were only 3 actions that were put on the action bar. But a number of other actions have come to light with more actions in the future. Some are also multi-select based. In a discussion with (influential) developers their suggestion was to put all actions on the context menu only - i.e. touch and hold and the menu appears. Is there any data that states how familiar users are with the context menu? Should we be using it at all or just use the action bar?
The contextual action bar is currently the right pattern for the generic contextual action problem. See the design guidelines of Android.
It supports multiselect and single select and offers room for multiple actions. It also has a higher discoverability than the long-press for pop-up menu. See also this related question.
A context menu is standard and something which, from my experience, has not caused any issues with people.
Without specifics of how you think people will use the app, it's difficult to give concrete suggestions. However you shouldn't just put everything into a context menu just because you can. If one or two function are used 90% of the time, then you should probably have them easily available without the need for an additional tap.
One worry with context menus is that the ability to just add more features often results in their being more features than is necessary, and subsequently a poorer UX. Think very carefully about whether a feature is really needed before you add it.
Having more than 5 buttons in the action bar will make it hard to use, it depends on the orientation of the device but I'm talking about portrait view, it will be hard to press the buttons. Is it possible to group the actions some how? What are the actions?
Threadlife has a fly out menu, when you press menu button, menu slides up with 4 icons and explanation of what the icons are making it very easy to use, user doesn't have to double guess what the icons mean. I think you should use this approach especially if there will be more than 5 actions. And with the right indication like a little arrow will not cause any problems to the users.
As an avid Android user (my wife would call me an "Android Fan") and a UX practitioner, I feel compelled to respond with my personal experience.
I find context menus very frustrating. There are several problems. The first is that press-and-hold is also used to begin a drag action in applications like GMail and as the select text action in the browser. Without "experimenting and remembering" this behavior is not consistent. Press-and-hold is totally broken on Android.
The second problem is that it slows me down. If my repeated actions are locked behind press-and-hold, I find myself using the app less. There has to be quick and easy ways to do common actions. Less common actions can probably survive in a context menu, but not the frequently used ones.
The third problem is that non-expert users are frequently unaware of press-and-hold. My wife has been using Android for over two years. I recently showed her that press-and-hold allows her to select text in the browser... she had no idea. It's not an obvious behavior that enables discoverability.
My recommendation is to make the context menu an alternative path to functionality and not the primary path.
There are a couple of problems that occur when using the long tab:
- The action possibility is invisible: a context menu has no button or other signifier (aka "Affordance"), so people don't know that they can use it.
- The Long-Tab is cumbersome to execute: It needs waiting time, which annoys people. In addition, if one is impatient and lifts the finger too early the waiting was in vain.
- It easily can be triggered accidentally by resting the finder on the display.
So I don't recommend the long tab. I don't know what your app does specifically, but you could:
- Divide the Actions on different screens
- Get rid of options if they are useless in specific cases so you don't need to display them than
- Use the menu button like already suggested in an answer here.