blob: fe77e79550537c4395d8d8882d5394aab9d69ea8 [file] [log] [blame]
Roman Nurikb99ae732012-03-06 12:26:15 -08001page.title=Action Bar
2@jd:body
Roman Nurik73790462011-12-22 16:18:19 -08003
Roman Nurikb99ae732012-03-06 12:26:15 -08004<img src="{@docRoot}design/media/action_bar_pattern_overview.png">
Roman Nurik73790462011-12-22 16:18:19 -08005
6<p>The <em>action bar</em> is arguably the most important structural element of an Android app. It's a
7dedicated piece of real estate at the top of each screen that is generally persistent throughout the
8app.</p>
9<p><strong>The main purpose of the action bar is to</strong>:</p>
10<ul>
11<li>Make important actions (such as <em>New</em> or <em>Search</em>, etc) prominent and accessible in a predictable
12 way.</li>
13<li>Support consistent navigation and view switching within apps.</li>
14<li>Reduce clutter by providing an action overflow for rarely used actions.</li>
15<li>Provide a dedicated space for giving your app an identity.</li>
16</ul>
17<p>If you're new to writing Android apps, note that the action bar is one of the most important design
18elements you can implement. Following the guidelines described here will go a long way toward making
19your app's interface consistent with the core Android apps.</p>
Roman Nurika53b3bf2012-02-29 11:59:32 -080020<h2 id="organization">General Organization</h2>
21
Roman Nurik73790462011-12-22 16:18:19 -080022<p>The action bar is split into four different functional areas that apply to most apps.</p>
Roman Nurikb99ae732012-03-06 12:26:15 -080023<img src="{@docRoot}design/media/action_bar_basics.png">
Roman Nurik73790462011-12-22 16:18:19 -080024
25<div class="layout-content-row">
26 <div class="layout-content-col span-7 with-callouts">
27
28 <ol>
29 <li class="value-1"><h4>App icon</h4>
30 <p>
31
Roman Nurika53b3bf2012-02-29 11:59:32 -080032The app icon establishes your app's identity. It can be replaced with a different logo or branding
33if you wish.
Roman Nurik73790462011-12-22 16:18:19 -080034Important: If the app is currently not displaying the top-level screen, be sure to display the Up
35caret to the left of the app icon, so the user can navigate up the hierarchy. For more discussion of
Roman Nurikb99ae732012-03-06 12:26:15 -080036Up navigation, see the <a href="{@docRoot}design/patterns/navigation.html">Navigation</a> pattern.
Scott Main59ea1152012-06-15 14:52:01 -070037 </p>
Roman Nurik73790462011-12-22 16:18:19 -080038
Scott Main59ea1152012-06-15 14:52:01 -070039<img src="{@docRoot}design/media/action_bar_pattern_up_app_icon.png">
40<div class="figure-caption">
41 App icon with and without "up" affordance.
Roman Nurik73790462011-12-22 16:18:19 -080042</div>
43
Roman Nurik73790462011-12-22 16:18:19 -080044 </li>
45 </ol>
46
47 </div>
48 <div class="layout-content-col span-6 with-callouts">
49
50 <ol>
51 <li class="value-2"><h4>View control</h4>
52 <p>
53
54If your app displays data in different views, this segment of the action bar allows users to switch
55views. Examples of view-switching controls are drop-down menus or tab controls.
56
57 </p>
58 <p>
59
60If your app doesn't support different views, you can also use this space to display non-interactive
61content, such as an app title or longer branding information.
62
63 </p>
64 </li>
65 <li class="value-3"><h4>Action buttons</h4>
66 <p>
67
68Show the most important actions of your app in the actions section. Actions that don't fit in the
69action bar are moved automatically to the action overflow.
70
71 </p>
72 </li>
73 <li class="value-4"><h4>Action overflow</h4>
74 <p>
75
76Move less often used actions to the action overflow.
77
78 </p>
79 </li>
80 </ol>
Roman Nurik73790462011-12-22 16:18:19 -080081 </div>
82</div>
83
Roman Nurika53b3bf2012-02-29 11:59:32 -080084<h2 id="adapting-rotation">Adapting to Rotation and Different Screen Sizes</h2>
Roman Nurik73790462011-12-22 16:18:19 -080085
Roman Nurik73790462011-12-22 16:18:19 -080086<p>One of the most important UI issues to consider when creating an app is how to adjust to screen
87rotation on different screen sizes.</p>
88<p>You can adapt to such changes by using <em>split action bars</em>, which allow you to distribute action bar
89content across multiple bars located below the main action bar or at the bottom of the screen.</p>
90
Roman Nurikb99ae732012-03-06 12:26:15 -080091<img src="{@docRoot}design/media/action_bar_pattern_rotation.png">
Roman Nurik73790462011-12-22 16:18:19 -080092<div class="figure-caption">
93 Split action bar showing action buttons at the bottom of the screen in vertical orientation.
94</div>
95
Roman Nurika53b3bf2012-02-29 11:59:32 -080096<h2 id="considerations-split-action-bars">Layout Considerations for Split Action Bars</h2>
Roman Nurik73790462011-12-22 16:18:19 -080097
98<div class="layout-content-row">
99 <div class="layout-content-col span-8 with-callouts">
100
101<p>When splitting up content across multiple action bars, you generally have three possible locations
102for action bar content:</p>
103<ol>
104<li><strong>Main action bar</strong></li>
105<li><strong>Top bar</strong></li>
106<li><strong>Bottom bar</strong></li>
107</ol>
108<p>If the user can navigate up the hierarchy from a given screen, the main action bar contains the up
109caret, at a minimum.</p>
110<p>To allow the user to quickly switch between the views your app provides, use tabs or a spinner in
111the top bar.</p>
112<p>To display actions and, if necessary, the action overflow, use the bottom bar.</p>
113
114 </div>
Scott Main59ea1152012-06-15 14:52:01 -0700115 <div class="layout-content-col span-5">
Roman Nurik73790462011-12-22 16:18:19 -0800116
Roman Nurikb99ae732012-03-06 12:26:15 -0800117 <img src="{@docRoot}design/media/action_bar_pattern_considerations.png">
Roman Nurik73790462011-12-22 16:18:19 -0800118
119 </div>
120</div>
121
Roman Nurika53b3bf2012-02-29 11:59:32 -0800122<h2 id="contextual">Contextual Action Bars</h2>
123
Roman Nurik73790462011-12-22 16:18:19 -0800124<p>A <em>contextual action bar (CAB)</em> is a temporary action bar that overlays the app's action bar for the
125duration of a particular sub-task. CABs are most typically used for tasks that involve acting on
126selected data or text.</p>
127
Roman Nurikb99ae732012-03-06 12:26:15 -0800128<img src="{@docRoot}design/media/action_bar_cab.png">
Roman Nurik73790462011-12-22 16:18:19 -0800129<div class="figure-caption">
130 Contextual action bar shown in Browser and Gmail
131</div>
132
133<p>The selection CAB appears after a long press on a selectable data item triggers selection mode.</p>
134<p><strong>From here the user can</strong>:</p>
135<ul>
136<li>Select additional elements by touching them.</li>
137<li>Trigger an action from the CAB that applies to all selected data items. The CAB then
138 automatically dismisses itself.</li>
139<li>Dismiss the CAB via the navigation bar's Back button or the CAB's checkmark button. This removes
140 the CAB along with all selection highlights.</li>
141</ul>
142<p>Use CABs whenever you allow the user to select data via long press. You can control the action
143content of a CAB in order to insert the actions you would like the user to be able to perform.</p>
144<p>For more information, refer to the "Selection" pattern.</p>
Roman Nurika53b3bf2012-02-29 11:59:32 -0800145<h2 id="elements">Action Bar Elements</h2>
146
Roman Nurik73790462011-12-22 16:18:19 -0800147<h4>Tabs</h4>
148<p><em>Tabs</em> display app views concurrently and make it easy to explore and switch between them. Use tabs
149if you expect your users to switch views frequently.</p>
150
Roman Nurikb99ae732012-03-06 12:26:15 -0800151<img src="{@docRoot}design/media/tabs_youtube.png">
Roman Nurik73790462011-12-22 16:18:19 -0800152
153<p>There are two types of tabs: fixed and scrollable.</p>
154
155<div class="layout-content-row">
156 <div class="layout-content-col span-6">
157
158<h4>Scrollable tabs</h4>
159<p><em>Scrollable tabs</em> always take up the entire width of the bar, with the currently active view item in
160the center, and therefore need to live in a dedicated bar. Scrollable tabs can themselves be
161scrolled horizontally to bring more tabs into view.</p>
162<p>Use scrollable tabs if you have a large number of views or if you're unsure how many views will be
163displayed because your app inserts views dynamically (for example, open chats in a messaging app
164that the user can navigate between). Scrollable tabs should always allow the user to navigate
165between the views by swiping left or right on the content area as well as swiping the tabs
166themselves.</p>
167
168 </div>
169 <div class="layout-content-col span-7">
170
171 <video width="400" class="with-shadow play-on-hover" autoplay>
Roman Nurikb99ae732012-03-06 12:26:15 -0800172 <source src="{@docRoot}design/media/tabs_scrolly.mp4" type="video/mp4">
173 <source src="{@docRoot}design/media/tabs_scrolly.webm" type="video/webm">
174 <source src="{@docRoot}design/media/tabs_scrolly.ogv" type="video/ogg">
Roman Nurik73790462011-12-22 16:18:19 -0800175 </video>
176 <div class="figure-caption">
Roman Nurikb20f1202012-03-29 13:28:13 -0700177 Scrolling tabs in the Play Store app.
Roman Nurik73790462011-12-22 16:18:19 -0800178 <div class="video-instructions">&nbsp;</div>
179 </div>
180
181 </div>
182</div>
183
184<div class="layout-content-row">
185 <div class="layout-content-col span-6">
186
187<h4>Fixed tabs</h4>
188<p><em>Fixed tabs</em> are always visible on the screen, and can't be moved out of the way like scrollable
189tabs. Fixed tabs in the main action bar can move to the top bar when the screen orientation changes.</p>
190
191 </div>
192 <div class="layout-content-col span-7">
193
Roman Nurikb99ae732012-03-06 12:26:15 -0800194 <img src="{@docRoot}design/media/action_bar_pattern_default_tabs.png">
Roman Nurik73790462011-12-22 16:18:19 -0800195 <div class="figure-caption">
196 Default fixed tabs shown in Holo Dark &amp; Light.
197 </div>
198
199 </div>
200</div>
201
202<div class="layout-content-row">
203 <div class="layout-content-col span-6">
204
205<h4>Spinners</h4>
206<p>A <em>spinner</em> is a drop-down menu that allows users to switch between views of your app. </p>
207<p><strong>Use spinners rather than tabs in the main action bar if</strong>:</p>
208<ul>
209<li>You don't want to give up the vertical screen real estate for a dedicated tab bar.</li>
210<li>You expect your app's users to switch views infrequently.</li>
211</ul>
212
213 </div>
214 <div class="layout-content-col span-7">
215
Roman Nurikb99ae732012-03-06 12:26:15 -0800216 <img src="{@docRoot}design/media/action_bar_pattern_spinner.png">
Roman Nurik73790462011-12-22 16:18:19 -0800217 <div class="figure-caption">
218 Action bar spinner from Calendar application.
219 </div>
220
221 </div>
222</div>
223
224<h4>Action buttons</h4>
225<p><em>Action buttons</em> on the action bar surface your app's most important activities. Think about which
226buttons will get used most often, and order them accordingly. Depending on available screen real
227estate, the system shows your most important actions as action buttons and moves the rest to the
Roman Nurika53b3bf2012-02-29 11:59:32 -0800228action overflow. The action bar and the action overflow should only present actions to the user that
229are available. If an action is unavailable in the current context, hide it. Do not show it as
230disabled.</p>
Roman Nurik73790462011-12-22 16:18:19 -0800231
Roman Nurikb99ae732012-03-06 12:26:15 -0800232<img src="{@docRoot}design/media/action_bar_pattern_action_icons.png">
Roman Nurik73790462011-12-22 16:18:19 -0800233<div class="figure-caption">
234 A sampling of action buttons used throughout the Gmail application.
235</div>
236
237<p>For guidance on prioritizing actions, use the FIT scheme.</p>
238
239<div class="layout-content-row">
240 <div class="layout-content-col span-4">
241
242<p><strong>F &mdash; Frequent</strong></p>
243<ul>
244<li>Will people use this action at least 7 out of 10 times they visit the screen?</li>
245<li>Will they typically use it several times in a row?</li>
246<li>Would taking an extra step every time truly be burdensome?</li>
247</ul>
248
249 </div>
250 <div class="layout-content-col span-4">
251
252<p><strong>I &mdash; Important</strong></p>
253<ul>
254<li>Do you want everyone to discover this action because it's especially cool or a selling point?</li>
255<li>Is it something that needs to be effortless in the rare cases it's needed?</li>
256</ul>
257
258 </div>
259 <div class="layout-content-col span-4">
260
261<p><strong>T &mdash; Typical</strong></p>
262<ul>
263<li>Is it typically presented as a first-class action in similar apps?</li>
264<li>Given the context, would people be surprised if it were buried in the action overflow?</li>
265</ul>
266
267 </div>
268</div>
269
270<p>If either F, I, or T apply, then it's appropriate for the action bar. Otherwise, it belongs in the
271action overflow.</p>
272
Roman Nurikbb9bffb2012-01-26 14:56:28 -0800273<p>
274
275Pre-defined glyphs should be used for certain common actions such as "refresh" and "share." The
276download link below provides a package with icons that are scaled for various screen densities and
277are suitable for use with the Holo Light and Holo Dark themes. The package also includes unstyled
278icons that you can modify to match your theme, in addition to Adobe&reg; Illustrator&reg; source
279files for further customization.
280
281</p>
282<p>
283
Roman Nurika53b3bf2012-02-29 11:59:32 -0800284<a href="https://dl-ssl.google.com/android/design/Android_Design_Icons_20120229.zip">Download the Action Bar Icon Pack</a>
Roman Nurikbb9bffb2012-01-26 14:56:28 -0800285
286</p>
287
Roman Nurik73790462011-12-22 16:18:19 -0800288<div class="layout-content-row">
289 <div class="layout-content-col span-6">
290
291<h4>Action overflow</h4>
292<p>The action overflow in the action bar provides access to your app's less frequently used actions.
293The overflow icon only appears on phones that have no menu hardware keys. Phones with menu keys
294display the action overflow when the user presses the key.</p>
295
296 </div>
297 <div class="layout-content-col span-7">
298
Roman Nurikb99ae732012-03-06 12:26:15 -0800299 <img src="{@docRoot}design/media/action_bar_pattern_overflow.png">
Roman Nurik73790462011-12-22 16:18:19 -0800300 <div class="figure-caption">
301 Action overflow is pinned to the right side.
302 </div>
303
304 </div>
305</div>
306
307<p>How many actions will fit in the main action bar? Action bar capacity is controlled by the following
308rules:</p>
309<ul>
310<li>Action buttons in the main action bar may not occupy more than 50% of the bar's width. Action
311 buttons on bottom action bars can use the entire width.</li>
312<li>The screen width in density-independent pixels
313 (<acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi screen.">dp</acronym>)
314 determine the number of items that will fit in the main action bar:<ul>
315<li>smaller than 360 dp = 2 icons</li>
316<li>360-499 dp = 3 icons</li>
317<li>500-599 dp = 4 icons</li>
318<li>600 dp and larger = 5 icons</li>
319</ul>
320</li>
321</ul>
322
Roman Nurikb99ae732012-03-06 12:26:15 -0800323<img src="{@docRoot}design/media/action_bar_pattern_table.png">
Roman Nurik73790462011-12-22 16:18:19 -0800324<div class="figure-caption">
325 In the above table "o" denotes an action bar item and "=" an overflow icon.
326</div>
327
328<h4>Sharing data</h4>
329<p>Whenever your app permits sharing of data, such as images or movie clips, use a <em>share action
330provider</em> in your action bar. The share action provider is designed to speed up sharing by
331displaying the most recently used sharing service next to a spinner button that contains other
332sharing options.</p>
333
Roman Nurikb99ae732012-03-06 12:26:15 -0800334<img src="{@docRoot}design/media/action_bar_pattern_share_pack.png">
Roman Nurik73790462011-12-22 16:18:19 -0800335<div class="figure-caption">
336 The Gallery app's share action provider with extended spinner for additional sharing options.
337</div>
338
Roman Nurika53b3bf2012-02-29 11:59:32 -0800339<h2 id="checklist">Action Bar Checklist</h2>
340
Roman Nurik73790462011-12-22 16:18:19 -0800341<p>When planning your split action bars, ask yourself questions like these:</p>
342<h4>How important is view navigation to the task?</h4>
343<p>If view navigation is very important to your app, use tabs (for fastest view-switching) or spinners.</p>
344<h4>Which of the app's actions need to be consistently available directly from the action bar, and which can be moved to the action overflow?</h4>
345<p>Use the <acronym title="Frequent, Important or Typical">FIT</acronym> scheme to decide if actions
346are displayed at the top-level or can be moved to the action overflow. If the number of top-level
347actions exceeds the capacity of the main action bar, display them separately in a bottom action bar.</p>
348<h4>What else is important enough to warrant continuous display?</h4>
349<p>Sometimes it is important to display contextual information for your app that's always visible.
350Examples are the number of unread messages in a messaging inbox view or the Now Playing information
351in a music player. Carefully plan which important information you would like to display and
352structure your action bars accordingly.</p>