Home | History | Annotate | Download | only in patterns
      1 page.title=Action Bar
      2 page.tags="actionbar","navigation"
      3 page.metaDescription=The Action bar is an essential design element for all apps. Learn about what the action bar can do and how to use it in your apps.
      4 @jd:body
      5 
      6 <img src="{@docRoot}design/media/action_bar_pattern_overview.png">
      7 
      8 
      9 <a class="notice-designers-material" href="http://www.google.com/design/spec/layout/structure.html#structure-app-bar">
     10   <div>
     11     <h3>Material Design</h3>
     12     <p>App Bar<p>
     13   </div>
     14 </a>
     15 
     16 <a class="notice-developers" href="{@docRoot}training/appbar/index.html">
     17   <div>
     18     <h3>Developer Docs</h3>
     19     <p>Adding the App Bar</p>
     20   </div>
     21 </a>
     22 
     23 <p>The <em>action bar</em> is a dedicated piece of real estate at the top of each screen that is generally persistent throughout the app.</p>
     24 <p><strong>It provides several key functions</strong>:</p>
     25 <ul>
     26   <li>Makes important actions prominent and accessible in a predictable way (such as <em>New</em> or <em>Search</em>).</li>
     27   <li>Supports consistent navigation and view switching within apps.</li>
     28   <li>Reduces clutter by providing an action overflow for rarely used actions.</li>
     29   <li>Provides a dedicated space for giving your app an identity.</li>
     30 </ul>
     31 <p>If you're new to writing Android apps, note that the action bar is one of the most important design elements you can implement. Following the guidelines described here will go a long way toward making your app's interface consistent with the core Android apps.</p>
     32 <h2 id="organization">General Organization</h2>
     33 
     34 <p>The action bar is split into four different functional areas that apply to most apps.</p>
     35 <img src="{@docRoot}design/media/action_bar_basics.png">
     36 
     37 <div class="cols">
     38   <div class="col-7 with-callouts">
     39 
     40     <ol>
     41       <li class="value-1"><h4>App icon</h4>
     42         <p>
     43 
     44 The app icon establishes your app's identity. It can be replaced with a different logo or branding
     45 if you wish.
     46 Important: If the app is currently not displaying the top-level screen, be sure to display the Up
     47 caret to the left of the app icon, so the user can navigate up the hierarchy. For more discussion of
     48 Up navigation, see the <a href="{@docRoot}design/patterns/navigation.html">Navigation</a> pattern.
     49         </p>
     50 
     51 <img src="{@docRoot}design/media/action_bar_pattern_up_app_icon.png">
     52 <div class="figure-caption">
     53   App icon with and without "up" affordance.
     54 </div>
     55 
     56       </li>
     57     </ol>
     58 
     59   </div>
     60   <div class="col-6 with-callouts">
     61 
     62     <ol>
     63       <li class="value-2"><h4>View control</h4>
     64         <p>
     65 
     66 If your app displays data in different views, this segment of the action bar allows users to switch
     67 views. Examples of view-switching controls are drop-down menus or tab controls. For more information on view-switching, see the <a href="{@docRoot}design/patterns/app-structure.html">App Structure</a> pattern.
     68 
     69         </p>
     70         <p>
     71 
     72 If your app doesn't support different views, you can also use this space to display non-interactive
     73 content, such as an app title or longer branding information.
     74 
     75         </p>
     76       </li>
     77       <li class="value-3"><h4>Action buttons</h4>
     78         <p>
     79 
     80 Show the most important actions of your app in the actions section. Actions that don't fit in the
     81 action bar are moved automatically to the action overflow. Long-press on an icon to view the action's name.
     82 
     83         </p>
     84       </li>
     85       <li class="value-4"><h4>Action overflow</h4>
     86         <p>
     87 
     88 Move less often used actions to the action overflow.
     89 
     90         </p>
     91       </li>
     92     </ol>
     93   </div>
     94 </div>
     95 
     96 <h2 id="adapting-rotation">Adapting to Rotation and Different Screen Sizes</h2>
     97 
     98 <p>One of the most important UI issues to consider when creating an app is how to adjust to screen
     99 rotation on different screen sizes.</p>
    100 <p>You can adapt to such changes by using <em>split action bars</em>, which allow you to distribute action bar
    101 content across multiple bars located below the main action bar or at the bottom of the screen.</p>
    102 
    103 <img src="{@docRoot}design/media/action_bar_pattern_rotation.png">
    104 <!-- <div class="figure-caption">
    105   Split action bar showing action buttons at the bottom of the screen in vertical orientation.
    106 </div> -->
    107 
    108 <h2 id="considerations-split-action-bars">Layout Considerations for Split Action Bars</h2>
    109 
    110 <div class="cols">
    111   <div class="col-8 with-callouts">
    112 
    113 <p>When splitting up content across multiple action bars, you generally have three possible locations
    114 for action bar content:</p>
    115 <ol>
    116 <li><strong>Main action bar</strong></li>
    117 <li><strong>Top bar</strong></li>
    118 <li><strong>Bottom bar</strong></li>
    119 </ol>
    120 <p>If the user can navigate up the hierarchy from a given screen, the main action bar contains the up
    121 caret, at a minimum.</p>
    122 <p>To allow the user to quickly switch between the views your app provides, use tabs or a spinner in
    123 the top bar.</p>
    124 <p>To display actions and, if necessary, the action overflow, use the bottom bar.</p>
    125 
    126   </div>
    127   <div class="col-5">
    128 
    129     <img src="{@docRoot}design/media/action_bar_pattern_considerations.png">
    130 
    131   </div>
    132 </div>
    133 
    134 <h2 id="ActionButtons">Action Buttons</h2>
    135 <p><em>Action buttons</em> on the action bar surface your app's most important activities. Think about which
    136 buttons will get used most often, and order them accordingly. Depending on available screen real
    137 estate, the system shows your most important actions as action buttons and moves the rest to the
    138 action overflow. The action bar should show only those actions that are available to the user. If an action is unavailable in the current context, hide it. Do not show it as disabled.</p>
    139 
    140 <img src="{@docRoot}design/media/action_bar_pattern_action_icons.png">
    141 <div class="figure-caption">
    142   A sampling of action buttons used throughout the Gmail application.
    143 </div>
    144 
    145 <p>For guidance on prioritizing actions, use the FIT scheme.</p>
    146 
    147 <div class="cols">
    148   <div class="col-4">
    149 
    150 <p><strong>F &mdash; Frequent</strong></p>
    151 <ul>
    152 <li>Will people use this action at least 7 out of 10 times they visit the screen?</li>
    153 <li>Will they typically use it several times in a row?</li>
    154 <li>Would taking an extra step every time truly be burdensome?</li>
    155 </ul>
    156 
    157   </div>
    158   <div class="col-4">
    159 
    160 <p><strong>I &mdash; Important</strong></p>
    161 <ul>
    162 <li>Do you want everyone to discover this action because it's especially cool or a selling point?</li>
    163 <li>Is it something that needs to be effortless in the rare cases it's needed?</li>
    164 </ul>
    165 
    166   </div>
    167   <div class="col-4">
    168 
    169 <p><strong>T &mdash; Typical</strong></p>
    170 <ul>
    171 <li>Is it typically presented as a first-class action in similar apps?</li>
    172 <li>Given the context, would people be surprised if it were buried in the action overflow?</li>
    173 </ul>
    174 
    175   </div>
    176 </div>
    177 
    178 <p>If either F, I, or T apply, then it's appropriate for the action bar. Otherwise, it belongs in the
    179 action overflow.</p>
    180 
    181 <p>
    182 
    183 Pre-defined glyphs should be used for certain common actions such as "refresh" and "share." The
    184 download link below provides a package with icons that are scaled for various screen densities and
    185 are suitable for use with the Holo Light and Holo Dark themes. The package also includes unstyled
    186 icons that you can modify to match your theme, in addition to Adobe&reg; Illustrator&reg; source
    187 files for further customization.
    188 
    189 </p>
    190 <p>
    191 
    192 <a onClick="ga('send', 'event', 'Design', 'Download', 'Action Bar Icons (@actionbar page)');"
    193    href="{@docRoot}downloads/design/Android_Design_Icons_20131106.zip">Download the Action Bar Icon Pack</a>
    194 
    195 </p>
    196 
    197 <div class="cols">
    198   <div class="col-6">
    199 
    200 <h4>Action overflow</h4>
    201 <p>The action overflow in the action bar provides access to your app's less frequently used actions.
    202 The overflow icon only appears on phones that have no menu hardware keys. Phones with menu keys
    203 display the action overflow when the user presses the key.</p>
    204 
    205   </div>
    206   <div class="col-7">
    207 
    208     <img src="{@docRoot}design/media/action_bar_pattern_overflow.png">
    209     <div class="figure-caption">
    210       Action overflow is pinned to the right side.
    211     </div>
    212 
    213   </div>
    214 </div>
    215 
    216 <p>How many actions will fit in the main action bar? Action bar capacity is controlled by the following
    217 rules:</p>
    218 <ul>
    219 <li>Action buttons in the main action bar may not occupy more than 50% of the bar's width. Action
    220   buttons on bottom action bars can use the entire width.</li>
    221 <li>The screen width in density-independent pixels
    222   (<acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi screen.">dp</acronym>)
    223   determine the number of items that will fit in the main action bar:<ul>
    224 <li>smaller than 360 dp = 2 icons</li>
    225 <li>360-499 dp = 3 icons</li>
    226 <li>500-599 dp = 4 icons</li>
    227 <li>600 dp and larger = 5 icons</li>
    228 </ul>
    229 </li>
    230 </ul>
    231 
    232 <img src="{@docRoot}design/media/action_bar_pattern_table.png">
    233 <div class="figure-caption">
    234   In the above table "o" denotes an action bar item and "=" an overflow icon.
    235 </div>
    236 
    237 <h4>Sharing data</h4>
    238 <p>Whenever your app permits sharing of data, such as images or movie clips, use a <em>share action
    239 provider</em> in your action bar. The share action provider is designed to speed up sharing by
    240 displaying the most recently used sharing service next to a spinner button that contains other
    241 sharing options.</p>
    242 
    243 <img src="{@docRoot}design/media/action_bar_pattern_share_pack.png">
    244 <div class="figure-caption">
    245   The Gallery app's share action provider with extended spinner for additional sharing options.
    246 </div>
    247 
    248 <h2 id="contextual">Contextual Action Bars</h2>
    249 
    250 <p>A <em>contextual action bar (CAB)</em> is a temporary action bar that overlays the app's action bar for the
    251 duration of a particular sub-task. CABs are most typically used for tasks that involve acting on
    252 selected data or text.</p>
    253 
    254 <img src="{@docRoot}design/media/action_bar_cab.png">
    255 <div class="figure-caption">
    256   Contextual action bar in Browser and Gmail
    257 </div>
    258 
    259 <p>The selection CAB appears after a long press on a selectable data item triggers selection mode.</p>
    260 <p><strong>From here the user can</strong>:</p>
    261 <ul>
    262 <li>Select additional elements by touching them.</li>
    263 <li>Trigger an action from the CAB that applies to all selected data items. The CAB then
    264    automatically dismisses itself.</li>
    265 <li>Dismiss the CAB via the navigation bar's Back button or the CAB's checkmark button. This removes
    266    the CAB along with all selection highlights.</li>
    267 </ul>
    268 <p>Use CABs whenever you allow the user to select data via long press. You can control the action
    269 content of a CAB in order to insert the actions you would like the user to be able to perform.</p>
    270 <p>For more information, refer to the <a href="{@docRoot}design/patterns/selection.html">Selection
    271 pattern</a>.</p>
    272 
    273 
    274 
    275 <h2 id="checklist">Action Bar Checklist</h2>
    276 
    277 <p>When planning your split action bars, ask yourself questions like these:</p>
    278 <h4>How important is view navigation to the task?</h4>
    279 <p>If view navigation is very important to your app, use tabs (for fastest view-switching) or spinners.</p>
    280 <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>
    281 <p>Use the <acronym title="Frequent, Important or Typical">FIT</acronym> scheme to decide if actions
    282 are displayed at the top-level or can be moved to the action overflow. If the number of top-level
    283 actions exceeds the capacity of the main action bar, display them separately in a bottom action bar.</p>
    284 <h4>What else is important enough to warrant continuous display?</h4>
    285 <p>Sometimes it is important to display contextual information for your app that's always visible.
    286 Examples are the number of unread messages in a messaging inbox view or the Now Playing information
    287 in a music player. Carefully plan which important information you would like to display and
    288 structure your action bars accordingly.</p>
    289